AnimatorController動畫遮罩

來源:互聯網
上載者:User

標籤:

遊戲中,我們的人物在某些時候,可能在一個時間點在做兩件事,這樣就需要同時播放兩個動畫,但我們肯定不能簡單將其疊加,比如移動著開槍、攻擊、揮手等等,那麼在Unity中我們應該怎樣實現這樣的功能呢?且聽我一一道來。

現在我們要做一個移動中揮手的動畫效果,當然,你也可以做成射擊等,根據這個你得準備相應的動畫片斷哦。

上次動畫融合樹的工程還在吧?我們在此基礎上,加上按下V鍵揮手的效果。
首先開啟主角的動畫狀態機器,在基本層BaseLayer下面添加一個層,取名叫做Wave吧,然後將層的權重Weight設定為1。
之後我們需要為下面的Mask屬性建立一個Avatar Mask,建立方法是在Project面板中右鍵選擇Create選項卡下的AvatarMask,我們給它命名為WaveMask,選中它,在Inspector面板下,點擊Humanoid倒三角,開啟遮罩狀態,可以看到我們的小人兒預設是全綠的,也就是沒有遮罩,這裡,我們只需要留下揮手動作(我的動作只需要右手),因此點擊小人兒身上需要遮住的部分如:

現在有了Mask,我們可以繼續剛才的操作了,在動畫層Wave中,將動畫遮罩屬性Mask指向我們剛才建立的AvatarMask。
遮罩層建好了,首先添加一個Trigger參數Wave,之後再添加動畫狀態,在Wave層下添加一個空狀態並設定為預設狀態,然後再把我們的揮手動畫狀態添加進來,設定預設狀態到Wave狀態過渡條件為Wave,Wave狀態到預設狀態為無條件。

最後打來我們之前的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 int WaveTrigger; //Wave參數ID 9     private float vertical;  //前進10 11     void Awake ()12     {13         anim = gameObject.GetComponent<Animator>();14         RunFloat = Animator.StringToHash("Run");15         WaveTrigger = Animator.StringToHash("Wave");16     }17     18     void Update ()19     {20         //來電者向控制21         vertical = Input.GetAxis("Vertical");22         //根據前進控制,設定Run參數的值,23         //後面兩個參數可不加,這裡是為了讓從走到跑看得更明顯24         anim.SetFloat(RunFloat, vertical, 1f, Time.deltaTime);25 26         if (Input.GetKeyDown(KeyCode.V))27         {28             Debug.Log("wave");29             anim.SetTrigger(WaveTrigger);30         }31     }32 }

運行遊戲,先讓角色跑起來,然後按 V 鍵,我們的主角邊跑邊向我們揮手了哦!

AnimatorController動畫遮罩

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.