- 最后登录
- 2019-12-2
- 注册时间
- 2012-8-25
- 阅读权限
- 90
- 积分
- 34660
- 纳金币
- 38268
- 精华
- 111
|
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();
- }
- //Unity3D:www.unitymanual.com
-
- 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);
- }
复制代码 |
|