Unity3D一個簡單的動畫混合Demo

來源:互聯網
上載者:User

          先說說Unity3D關於動畫方便的東西,Animation Mixing (動畫混合),什麼是動畫混合呢?舉個簡單的例子吧,一個模型現在又3種動作,分別是idle、walk、shoot,在Unity3D中一個Layer只能播放二種動畫,shoot動作隻影響左肩膀的骨骼,而不會影響腿部的動作,所有這裡就可以把shoot和walk進行Mixing。

 

function Start ()
{

//增加一個動畫剪輯片段

//
 animation.AddClip(animation["shoot"].clip, "shootUpperBody");
 animation["shootUpperBody"].AddMixingTransform(transform.Find("mover/gun"));
//@parm 路徑
 animation["shootUpperBody"].AddMixingTransform(transform.Find("mover/roothandle/spine1"));
//設定動畫模式 
 animation.wrapMode = WrapMode.Loop;

 animation["jump"].wrapMode = WrapMode.Clamp;
 animation["shoot"].wrapMode = WrapMode.Clamp;
 animation["shootUpperBody"].wrapMode = WrapMode.Clamp;
 
 // Put idle and run in a lower layer. They will only animate if our action animations are not playing
 animation["idle"].layer = -1;
 animation["run"].layer = -1;
 
 animation.Stop();
}

function Update () {
 if (Mathf.Abs(Input.GetAxis("Vertical")) > 0.1)
 {
  animation.CrossFade("run");
  animation["run"].speed = Mathf.Sign(Input.GetAxis("Vertical"));
 }
 else
  animation.CrossFade("idle");

 if (Input.GetButtonDown ("Jump"))
 {
  animation.CrossFade("jump", 0.3);
 }
  if (Input.GetButtonDown ("Fire1"))
 {
  if (animation["run"].weight > 0.5)
   animation.CrossFadeQueued("shootUpperBody", 0.3, QueueMode.PlayNow);
  else
   animation.CrossFadeQueued("shoot", 0.3, QueueMode.PlayNow);
 }

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.