美工作好的模型,直接将文件夹拖进来就导入好了。导入模型后,检查模型的材质贴图等是否丢失,若丢失,根据名字补上。若是美工取名规范,一一对应的话,就很简单。若是不是,那就呵呵哒。node
有的美工作的比较差,全部模型的动画都在一个上面,须要咱们后续的动画分割,遇到这种,嗯,内心骂骂就行了。可是,做为一个程序,分割动画真的好麻烦的好吧。oop
而有的美工就作的很好了,动画都是单独的,不须要咱们后续动画分割,但也有可能会须要一些小的调整。优化
选中模型后,Rig表示动画的导入方式动画
Node:不导入动画3d
Legacy:老版本的动画导入方式,如今基本不会用到了,可是若是用到老版本的资源,也会使用到这个。使用此种方式导入的动画,只能使用Animation组件播放动画,而不能使用新版的动画状态机。code
Generic:新版的动画导入方式,适用于非人型的东西。选择此种方式,要指定Avatar Definition(骨骼映射方式)和Root node(根节点)。其中骨骼映射方式能够选择从当前模型建立和从其它骨骼复制,后者须要两个模型具备相同的骨骼,一般一个美工作的是同样的。参数Optimize Game Object,表示模型优化,建议在打包时勾选。orm
注意:此种方式不能使用动画重定向,并且动画的控制,好比移动等,都须要代码控制!!!blog
Humanoid:新版的动画导入方式,人型和非人型都能用。这种方式动画不须要代码单独控制,并且相同的骨骼模型可使用动画重定向资源
Bake Into Pose:勾选后表示当前属性不会随动画动做改变字符串
Based Upon:至关于基点
Loop match:循环匹配,绿点表示匹配的很好
选中Animation进行动画分割,勾选Loop Pose表示该动画循环播放
导入动画后,将模型拖到场景中,建立的物体身上会自带一个Animator组件,其中的Controller就是动画状态机。动画状态机能够手动建立(右键,Animator Controller),在Animator界面中能够对状态机进行编辑。
在Animation界面中的Parameter中,添加一个控制状态,使用这个状态来控制动画的切换。其中,物体的Animator组件控制这些状态。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Biker : MonoBehaviour { private Animator anim; void Start () { // 获取Animator组件 anim = GetComponent<Animator>(); } void Update () { float v = Input.GetAxisRaw("Vertical"); // 使用代码控制状态 anim.SetInteger("Vertical", (int)v); //transform.Translate(Vector3.forward * v * Time.deltaTime * 4); } }
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Biker : MonoBehaviour { private Animator anim; // 转换ID int verticalID = Animator.StringToHash("Vertical"); void Start () { // 获取Animator组件 anim = GetComponent<Animator>(); } void Update () { float v = Input.GetAxisRaw("Vertical"); // 使用代码控制状态 anim.SetInteger(verticalID, (int)v); //transform.Translate(Vector3.forward * v * Time.deltaTime * 4); } }
在Curves(曲线)里添加一个状态曲线,左侧添加一个相同名字的参数。在动画运行的时候,由于动画中有这个曲线,因此不能经过代码来控制参数。可是,曲线运动时,在不一样时间参数值会根据曲线变化。咱们能够获取到这个值来使用,好比,一个添加了角色控制器的角色FQ,在FQ动画播放时,有一段时间须要将角色的角色控制器禁用,不然角色控制器会碰到墙壁。这时,设置好曲线,在FQ动画播放到一个时间段时,禁用角色控制器。