AnimatorController動畫融合樹


通過Unity動畫狀態機,能幫我們輕松處理轉換各個動畫片斷,達到想要的效果,但是如果僅僅是一個個動畫的硬生生的切換,那么看起來就非常突然,而不真實了,在質量要求比較高的游戲中,特別是動作游戲,我們就不能直接簡單地用Translation連起來了,而應該使用動畫融合樹。

准備工作:一個人物模型,一個待機動畫,一個行走動畫,一個奔跑動畫。

通常游戲中,我們人物從待機到跑直接切換就行,今天我們加一個行走的過渡效果吧。
創建一個動畫控制器AnimatorController,將人物的Animator組件的Controller屬性指向我們剛才創建的AnimatorController。
在AnimatorController中添加一個空狀態Idel,然后設置動畫片斷為我們的待機動畫。
然后再創建一個動畫融合樹WalToRun:
無標題
雙擊融合樹進入編輯狀態,在右側的Inspector面板中的Motion列表中添加兩個元素,從上到下依次選擇我們的行走動畫和奔跑動畫。
創建float類型動畫參數Run,將融合樹的Parameter參數設置為Run:
QQ截圖20151007164124
最后,將待機狀態Idel使用Translation連接到融合樹,設置Condition參數為 Run Greater 0.1,反過來融合樹到Idel的連接Condition設置為 Run Less 0.1。

一切就緒,在Player身上添加腳本DearMove:

 1 using UnityEngine;
 2 using System.Collections;
 3  
 4 public class DearMove : MonoBehaviour
 5 {
 6     private Animator anim;  //動畫狀態機
 7     private int RunFloat;   //Run參數ID
 8     private float vertical; //前進
 9  
10     void Awake ()
11     {
12         anim = gameObject.GetComponent<Animator>();
13         RunFloat = Animator.StringToHash("Run");
14     }
15      
16     void Update ()
17     {
18         //呼叫方向控制
19         vertical = Input.GetAxis("Vertical");
20         //根據前進控制,設置Run參數的值,
21         //后面兩個參數可不加,這里是為了讓從走到跑看得更明顯
22         anim.SetFloat(RunFloat, vertical, 1f, Time.deltaTime);
23     }
24 }

運行游戲,按住 W 鍵,可以看到Player從走慢慢過渡到跑咯!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM