版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40695551/article/details/78539709
Unity5权威讲解之菜鸟读书笔记(四)
16.Mecanim动画系统
动画类型
类型 | 特征 |
---|---|
Legacy | Unity4.0 之前版本中使用的动画系統 |
Generic | Mecanim动画系统(非人形模型),无法使用重新设定目标功能 |
Humaniod | Mecanim动画系统(人形模型、2足步行模型),可以重新设定目标 |
点击Configure按钮看骨骼是否映射成功。
17.创建动画控制器(Animator Controller)
状态分类 | 作用 |
---|---|
Entry | 开始状态,状态机最初进入点 |
Exit | 结束状态,所有状态结束的终态 |
Any State | 无论当前正在以何种状态运行,只要满足条件,都需要分离的任一状态 |
Parameters选项变量为
Float:浮点型(speed)
Int:整形(多用于控制状态机内部的整型参数)
Bool:布尔值(isRun)
Int:整形(多用于控制状态机内部的整型参数)
Bool:布尔值(isRun)
Trigger:本质上也是一个Bool类型的参数,但是其值默认为false,且设置为true后系统会自动将其还原为false;
Has Exit Time有存在时间,表示动画必须播放完毕后才跳转到下一个动画,去掉勾选可以直接进行跳转。
18.导航系统
1.先将Floor模型设置为Navigation Static。如果有障碍物也要修改为Navigation Static。
2.Nav Mesh Agent 分析烘培的导航网络,回避障碍物,追踪目标。
简单的追踪代码:
private Transform player;
// 获取玩家位置
private Transform monsterTr;
private NavMeshAgent nav;
// 获取NavMesh Agen't
void Awake()
{
monsterTr = this.gameObject.GetComponent<Transform>();
// 引用赋值
player = GameObject.FindGameObjectWithTag("Player").transform;
// 如果场景层级过多,建议不要使用 FindGameObjectWithTag的方法
// 鉴于这种情况,可以把玩家设置成公共变量,或者从检视面板中设置引用
nav = GetComponent<NavMeshAgent>();
}
void Update()
{
// 设置目标为玩家的寻路代理的目的地
nav.SetDestination(player.position);
}
GameObject.FindGameObjectWithTag(" ")函数处理速度比较慢,最好不要在Update函数中使用,而在Awake,Start中使用。