当前位置:   article > 正文

Unity3D一个简单的动画混合Demo_unity简单的动画系统demo github

unity简单的动画系统demo github

          先说说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);
 }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/117940
推荐阅读
相关标签
  

闽ICP备14008679号