Unity中的動畫系統和Timeline(3) 模型和動畫導入

動畫導入

 

美工作好的模型,直接將文件夾拖進來就導入好了。導入模型後,檢查模型的材質貼圖等是否丟失,若丟失,根據名字補上。若是美工取名規範,一一對應的話,就很簡單。若是不是,那就呵呵噠。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);
	}
}

StringToHash把參數字符串轉換成ID:

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動畫播放到一個時間段時,禁用角色控制器。

相關文章
相關標籤/搜索