美工作好的模型,直接將文件夾拖進來就導入好了。導入模型後,檢查模型的材質貼圖等是否丟失,若丟失,根據名字補上。若是美工取名規範,一一對應的話,就很簡單。若是不是,那就呵呵噠。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動畫播放到一個時間段時,禁用角色控制器。