装备选择完之后切换到主游戏界面

1140 未经授权,禁止转载了解课程
课程介绍
讨论{{interaction.discussNum ? '(' + interaction.discussNum + ')' : ''}}
适合人群
unity3d游戏开发工程师
你将会学到
通过本课程来积累项目经验,可以很好的应用unity3d以及c#语言
  • unity3d引擎的学习
  • c#语言的学习
  • 实战项目的积累工作
课程简介

本课程讲解的主要内容:

1、游戏功能点

    角色换装和信息存储

    敌人的AI

    BOSS的AI

    虚拟操作杆

    角色的行走控制

    角色的控制

    小地图实现

    状态机和连招



2、 换装系统


1、导入模型资源文件,制作角色和武器的Prefab

(fbx files,Material.unitypackage)

2、介绍头部和手部的换装,和颜色的更换

3、制作UI控制界面

4、实现换装控制

5、换装信息的保存和加载

        2.1 导入模型资源文件,制作角色和武器的Prefab

        资源导入

        (fbx files,Material.unitypackage)

        资源分类

        角色

        角色身体部分

        敌人

        BOSS

        模型导入属性设置

        模型的动画导入

        

        2.2介绍头部和手部的换装,和颜色的更换

        通过SkinnedMeshRenderer组件来更换角色的外形(衣服)

        什么是SkinnedMeshRenderer组件

        当导入有蒙皮的网格时,骨骼蒙皮渲染器会自动添加到导入的网格。

        sharedMesh

        用于蒙皮的网格

        通过设置Renderer组件.material.color的颜色来更换外形的颜色(衣服的颜色)

        

        2.3 制作UI控制界面

        界面开发(UI.unitypackage)

        头部和手换装的按钮

        颜色换装的按钮

        

        2.4、实现换装控制

        

        通过SkinnedMeshRender控制换装

        SharedMesh

        material.color

        

        2.5 换装信息的保存和加载

        

        PlayerPrefs

        SetInt("key",value);

        GetInt("key");

        

        信息的加载分析

        通过存储的身体的各个部分的Index,更换Mesh

        通过存储的颜色的Index,更换角色的颜色                                                


3、主角的控制

    环境创建 Image.unitypackage FX.unitypackage

    摄像机的跟随

    使用CharacterController控制行走

    添加虚拟杆控制

    状态机设计

    动画控制

    

    3.1 环境的创建

    资源导入

    Image.unitypackage

    FX.unitypackage

    使用cube创建环境

    使用FX中的特效给环境添加下雨的效果

    

    3.2 摄像机的跟随

    开发摄像机的跟随

    使用Vertor3.Lerp 插值运算

    摄像机的视角,让摄像机观察着角色

    Quaternion.LookRotation 得到一个四元数,表示跟参数一样方向的旋转

    Quaternion.Slerp 按照圆弧插值,这个插值计算更适用于,角度变换

    

    3.3 使用CharacterController控制行走

    使用Input.GetAxis("Horizontal") 和 "Vertical"得到垂直和水平方向的值

    使用CharacterController.SimpleMove(Vector3)参数表示运动的方向和速度 单位可以认为是 m/s

    

    3.4 添加虚拟杆控制行走

    

    根据触摸位置的移动虚拟按钮

    

    得到虚拟杆横向和垂直的值,控制角色的移动

    

    3.5 主角的状态机设计

    

    制作动画状态机

    动画的属性设置,分为循环动画和一次性动画

    主角的动画分类

    休闲

    行走

     Attack1 Attack2 RangeAttack

    被

    

    3.6 的动画控制

    

    设置虚拟的按钮

    通过代码添加按钮的点击事件监听

    EventDelegate normalClickEvent = new EventDelegate(this, "OnNormalAttackButtonClick");

    GameObject.Find("NormalAttack").GetComponent().onClick.Add(normalClickEvent);

    给状态机设置状态条件

    修改Trigger    animator.SetTrigger("AttackB");

    修改Boolanimator.SetBool("Walk", false);


4、敌人的设计和AI开发


    导入Boss的模型和导入设置 

    根据导入动画设计Boss的状态机 

    开发Boss的AI(自动和自动寻路)

    添加敌人Monster

    设计Monster的状态机和AI

    

    4.1 导入Boss的模型和导入设置

    导入BOSS的模型和动画(使用mecanim动画系统导入)

    关于动画的设置分为两种

    不重复的 动画 Attack ,Damage,Death

    重复的动画Stand,Run

    根据导入的模型做成一个Prefab

    

    4.2 根据导入动画设计Boss的状态机

    根据Boss动画之间转换设计状态机

    重要的方法

    Animator.SetTrigger("");

    Animator.SetBool("",true/false);

    

    4.3 开发Boss的AI(自动和自动寻路)

    CharacterController控制移动

    SimpleMove(Vector3)移动

    根据和角色的位置和距离,判断是否进行,的时候利用随机数来随机发起 Attack1 Attack2

    

    4.4 添加敌人Monster

    添加Monster的模型和动画

    

    4.5 设计Monster的状态机和AI

    

    设计Monster的状态机

    设计Monster的AI-自动寻路和自动

5、敌人的设计和AI开发


    导入Boss的模型和导入设置 

    根据导入动画设计Boss的状态机 

    开发Boss的AI(自动和自动寻路)

    添加敌人Monster

    设计Monster的状态机和AI

    伤害

    

    5.1 导入Boss的模型和导入设置

    导入BOSS的模型和动画(使用mecanim动画系统导入)

    关于动画的设置分为两种

    不重复的 动画 Attack ,Damage,Death

    重复的动画Stand,Run

    根据导入的模型做成一个Prefab

    

    5.2根据导入动画设计Boss的状态机

    根据Boss动画之间转换设计状态机

    重要的方法

    Animator.SetTrigger("");

    Animator.SetBool("",true/false);

    

    5.3 开发Boss的AI(自动和自动寻路)

    CharacterController控制移动

    SimpleMove(Vector3)移动

    根据和角色的位置,判断是否进行,的时候利用随机数来随机发起 Attack1 Attack2

    

    5.4 添加敌人Monster

    添加Monster的模型和动画

    

    5.5 设计Monster的状态机和AI

    根据模型中的动画设置状态机

    控制敌人的AI(自动和自动寻路)

    

    5.6 伤害

    

    两个变量 HP ATK

    根据动画添加Function 

    一用来处理

    一用来处理受到


6、伤害


    设计敌人的自动生成

    设计公有接口 处理伤害

    处理Player的武器

    处理Player的枪

    处理Monster的

    处理Boss的

    

    6.1 设计敌人的自动生成

    

    设计敌人的生成的位置

    创建敌人生成的脚本

    控制三波敌人的生成

    

    6.2 设计公有接口 处理伤害

    

    设计处理伤害的共有类ATKAndDamage

    设计TakeDamage方法

    属性:

    hp

    normalAttack

    attackDistance

    导入FX-hit 打击的特效 Hit_Effect.unitypackage(Boss Monster)受到伤害的时候显示特效

    

    6.3 处理Player的武器

    

    在动画中合适的时机添加的事件Event

    

    AttackA AttackB 单个目标

    AttackRange范围

    AttackGun 枪

    

    

    6.4 处理Player的枪

    

    设计Prefab

    行走

    触发检测

    设计的发射

    

    6.5 处理Monster的

    

    Monster的动画中添加事件MonAttack

    

    

    6.6 处理Boss的

    

    Boss的动画

    Attack01

    Attack02

    在动画中添加事件处理


7、掉落物品拾取和处理


    开发掉落物品

    掉落物品的拾取

    处理武器切换

    处理按钮的切换

    

    7.1 开发掉落物品

    

    设计掉落物品

    随机运动

    接触底面的检测

    接触主角的检测

    

    

    7.2 掉落物品的拾取

    

    使用Vertor3.Lerp控制物品的拾取运动

    在player上添加脚本控制拾取

    

    

    7.3 处理武器切换

    

    掉落物品的生成

    拾取物品后处理武器的切换

    控制每个特殊武器的显示时间

    双剑

    枪

    

    7.4 处理按钮的切换

    

    面板的两种模式

    normal range  (普通和范围)

    red (发射)

    使用单例模式 控制上边这两种面板的模式的切换

    

8、小地图和游戏后期处理


    小地图的实现

    在UI上设计小地图,和图标的生成

    主角的图标的转向

    控制敌人的图标的生成,位置和旋转更新

    给游戏添加声音

    给武器添加拖痕 

    场景的切换和换装信息的加载(游戏结束)

    

    8.1 给游戏添加声音

    

    导入声音资源 Sound.unitypackage

    BGM

    BossAttack

    BossDeath

    ButtonClick

    GameOver

    GameVictory

    ItemPickup

    MonterDeath

    PlayerGunShot

    PlayerSwordSwing

    Thunderstorm

    

    8.2 给武器添加拖痕

    

    导入插件Pocket RPG Weapon Trails

    

    8.3 场景的切换和换装信息的加载(游戏结束)

    

    场景的切换Application.LoadLevel

    

    给主角加载换装信息PlayerPrefs.GetInt


展开更多
发布
头像

{{ item.user.nick_name }} {{ EROLE_NAME[item.user.identity] }}

置顶笔记
讨论图
{{ item.create_time }}回复
  • 删除

    是否确认删除?

    确认
    取消
  • {{ item.is_top == 1 ? '取消置顶' : '置顶'}}

    已有置顶的讨论,是否替换已有的置顶?

    确认
    取消
{{ tag.text}}
头像
{{ subitem.user.nick_name }}{{ EROLE_NAME[subitem.user.identity] }}
{{ subitem.create_time }}回复
删除

是否确认删除?

确认
取消
发布
{{pageType === 'video' ? '讨论区抢占沙发,可获得双倍学分' :'讨论区空空如也,你来讲两句~'}}
发布
{{tips.text}}
{{ noteHeaderTitle }} 笔记{{ hasMyNote ? '我的笔记' : '记笔记' }}
{{ hasMyNote ? '我的笔记' : '记笔记' }}
优质笔记
更新于:{{ $dayjs.formate('YYYY-MM-DD HH:mm:ss', item.last_uptime*1000) }}
头像
{{ detail.username }}

公开笔记对他人可见,有机会被管理员评为“优质笔记”

{{ noteEditor.content.length }}/2000

公开笔记
保存
提问

讲师收到你的提问会尽快为你解答。若选择公开提问,可以获得更多学员的帮助。

记录时间点
记录提问时视频播放的时间点,便于后续查看
公开提问
提交