BleedTree動畫混合樹


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

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

通常游戲中,我們人物從待機到跑直接切換就行,今天我們加一個行走的過渡效果吧。
創建一個動畫控制器AnimatorController,將人物的Animator組件的Controller屬性指向我們剛才創建的AnimatorController。
在AnimatorController中添加一個空狀態Idel,然后設置動畫片斷為我們的待機動畫。
然后再創建一個動畫融合樹WalToRun:

 

雙擊融合樹進入編輯狀態,在右側的Inspector面板中的Motion列表中添加兩個元素,從上到下依次選擇我們的行走動畫和奔跑動畫。
創建float類型動畫參數Run,將融合樹的Parameter參數設置為Run:

 

最后,將待機狀態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 }

 

游戲動畫中的一個常見任務是在兩個或更多相似運動之間混合。最佳的已知示例可能是根據角色速度混合行走和奔跑動畫。另一個示例是角色在奔跑過程中轉彎時向左或向右傾斜。

重要的是區分轉換 (Transition) 與混合樹 (Blend Tree)。雖然兩者都用於創建平滑動畫,但是它們用於不同類型的情況。

  • 轉換 (Transition) 用於在給定時間量內從一個動畫狀態 (Animation State) 平滑轉換為另一個狀態。轉換指定為動畫狀態機 (Animation State Machine) 的一部分。如果轉換迅速,則通常可從一個運動很好地轉換為完全不同的運動
  • 混合樹 (Blend Tree) 用於允許通過按不同程度組合所有動畫的各個部分來平滑混合多個動畫。各個運動參與形成最終效果的量使用混合參數進行控制,該參數只是與動畫器控制器 (Animator Controller) 關聯的數值動畫參數之一。要使混合運動有意義,混合的運動必須具有相似性質和時間。混合樹 (Blend Tree) 是動畫器控制器 (Animator Controller) 中的特殊狀態類型。

相似運動示例可以是各種行走和奔跑動畫。要使混合工作良好,片段中的移動必須在相同的規范化時間點發生。例如,行走和奔跑動畫可以對齊,以便腳與地面接觸的時刻在相同的規范化時間點發生(例如,左腳在 0.0 踏地,而右腳在 0.5 踏地)。因為使用規范化時間,所以片段是否具有不同長度無關緊要。

要開始使用新混合樹 (Blend Tree),需要:

  1. 右鍵單擊動動畫器控制器窗口 (Animator Controller Window)上的空白空間
  2. 從出現的上下文菜單中選擇 創建狀態 (Create State) > 從新混合樹 (From New Blend Tree)。
  3. 雙擊混合樹 (Blend Tree) 以進入混合樹圖 (Blend Tree Graph)。

動畫器控制器窗口 (Animator Controller Window) 現在顯示整個混合樹 (Blend Tree) 的圖形,而檢視器 (Inspector) 顯示當前選擇的節點及其直接子級。

 

 

動畫器窗口 (Animator Window) 顯示整個 混合樹 (Blend Tree) 的圖形。左側是僅包含根混合節點 (Blend Node) 的混合樹 (Blend Tree)。右側是包含根混合節點 (Blend Node) 以及以三個動畫片段 (Animation Clip) 作為子節點的混合樹 (Blend Tree)。

這會為參數值變化時的動畫組合方式提供 圖形可視化(在拖動滑塊時,源自樹根的箭頭會改變其底紋以顯示主要動畫片段)。

可以在混合樹 (Blend Tree) 圖中選擇任何節點以在檢視器 (Inspector) 中檢視它。如果所選節點是動畫片段 (Animation Clip),則會顯示該動畫片段 (Animation Clip) 的檢視器 (Inspector)。如果動畫是從模型導入,則設置是只讀的。如果節點是混合節點 (Blend Node),則會顯示混合節點 (Blend Node) 的檢視器 (Inspector)。

 

 

任何運動之前在 檢視器 (Inspector) 中顯示的混合節點 (Blend Node) 已添加。

混合類型”(Blend Type) 下拉菜單用於選擇可以根據一個或兩個參數混合的不同混合類型之一。可以在以下頁面上了解有關不同混合類型和其他混合樹 (Blend Tree) 選項的更多信息。

 


免責聲明!

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



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