天天看點

Unity Animator混合樹

1: 狀态轉換 :是在規定時間,或者某一條件下:從一個動作過渡到另一個動作,在兩個不同的動作過渡用這個會比較有好的過渡效果。

2.   BlendTree 混合樹: 一般混合兩個相似的動作,它們可以通過控制權重來決定混合程度。

混合樹建立步驟:1.右擊出現creat state -> from blend Tree.

Unity Animator混合樹

2.輕按兩下建立的混合樹:

Unity Animator混合樹

3.右擊添加兩個addMotion

Unity Animator混合樹

4.建立兩個Motion:設定Blend Type 為1D ( 隻有一個參數,用于控制狀态之間的切換 )右上角的Parameter參數 為 Speed .然後通過設定speed在Unity 腳本中設定混合的權重:因為主角上升下落會導緻主角上升下落動作融合切換,是以可以通過把主角的正負速度設定為Speed 這個參數的值;代碼如下

//這個插值可以使在主角踩在蹦床的時候要 向上彈跳的時候(沖力)(速度比較大)但是一下子動作速度從負到正(比較大的速度)的融合異常。

float _speed = Mathf.Lerp(qiqiAnimator.GetFloat("Speed"), qiqiRigidbody.velocity.y, Time.deltaTime * 5);       player.SetFloat("Speed", _speed);

Unity Animator混合樹

5.speed參數的設定在左上角parameter上設定。

Unity Animator混合樹

6. blendTree Type

1.   2D Simple Directional具有方向性的卡通片段,同一方向上最好不要有多個卡通片段

2 .  2D Freeform Directional :主要用于控制具有方向性的卡通片段,同一方向上允許有多個卡通片段,(0,0)位置上必須有一個卡通片段

3.  2D Freeform Cartesian : 不一定具有方向性的卡通片段.

下面:建立蹦床的九個動作:把blendTree 設定2D笛卡爾坐标系(上面第三種):給它們設定兩個參數:分别為Horizontal ,Height,然後通過設定混合樹對應參數的坐标。這樣在蹦床上就可以通過主角碰到蹦床的時候根據蹦床要給予主角向上的力度大小歸一化大小來判斷蹦床深度混合程度以及主角踩在蹦床位置歸一化比例大小來判斷主角左中右動畫的融合程度。

設定代碼類似上面。

Unity Animator混合樹

繼續閱讀