一、角色動畫的使用練習
從資源商店導入的動畫資源(Character Pack: Free Sample)中將資源中的角色創建在場景里,現在場景里存在的角色并沒有任何動畫。
在資源中找到Animations文件夾,在這個文件有很多模型文件(.FBX),一般在這些模型文件中就包含了動畫片段。
動畫片段的使用:
創建一個動畫控制器然后將控制器拖到物體的animator組件的控制器上,然后雙擊打開控制器。之后就可以將動畫拖拽到控制器中使用,例如:
運行后就可播放動畫
現在想實現多個動畫之間的切換,例如:
方式一:
選中idle右鍵→創建過渡然后將箭頭指向需要切換的動畫,這樣在執行玩一個動畫后就會過渡到第二個動畫。
方式二:通過按鈕控制過渡
為動畫添加條件,選擇動畫器的參數面板,為其添加一個參數,這里有四種類型:Float、Int、Bool、Trigger
現在使用 Trigger 并命名為 pickup。選中過渡的箭頭線段,在右邊檢查器面板中找到Condition 點擊加號選擇事件pickup。
現在就為過渡事件添加條件:idle動畫不能隨便過渡到pickup動畫,只有當pickup被觸發之后才能從idle動畫過渡到pickup動畫。只有當觸發事件是選中狀態才會切換一次。比如:
現在要通過腳本的方式去控制這個觸發事項是否的選擇,比如按下按鍵就讓pickup參數觸發
? ? void Update()
? ? {
? ? ? ? if (Input.GetKeyDown(KeyCode.F))
? ? ? ? {
? ? ? ? ? ? GetComponent<Animator>().SetTrigger("pickup");
? ? ? ? }
? ? }
現在只要按下 F 按鈕就會使觸發事件被選中,但是現在這個過渡動畫不會立刻執行,會等待當前的動畫執行完畢后才會執行。
現在選中箭頭線段,將檢查器面板的有退出時間不勾選,這樣一按下按鍵就會立刻執行動畫
示例:要讓角色在動并在移動時執行動畫,角色在移動時就執行跑步的動畫,停止時執行idle的動畫。
首先設置事件觸發參數:
這里的事件參數就不能選著tagger,因為這種只會執行一次,要選中其他的(Int Float Bool),這里選擇bool。并且相互添加上過渡,并且在檢查器面板中設置Condition的事件觸發條件,Run動畫切換的條件是IsRun為ture,idle動畫的切換條件IsRun為false。
然后通過代碼去控制角色:
?private Animator animator;
? ? void Start()
? ? {
? ? ? ? animator = GetComponent<Animator>();
? ? }
? ? void Update()
? ? {
? ? ? ? float horizontal = Input.GetAxis("Horizontal");
? ? ? ? float vertical = Input.GetAxis("Vertical");
? ? ? ? //向量
? ? ? ? Vector3 dir = new Vector3(horizontal,0, vertical);
? ? ? ? //按下按鍵
? ? ? ? if(dir != Vector3.zero)
? ? ? ? {
? ? ? ? ? ? //讓角色面向向量
? ? ? ? ? ? transform.rotation = Quaternion.LookRotation(dir);
? ? ? ? ? ? //播放動畫
? ? ? ? ? ? animator.SetBool("IsRun", true);
? ? ? ? ? ? //朝向前方移動
? ? ? ? ? ? transform.Translate(Vector3.forward * 2 * Time.deltaTime);
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? animator.SetBool("IsRun", false);
? ? ? ? }
? ? }
這樣角色移動時會播放跑步的動畫,停止時會播放停止的動畫。