纳金网
标题:
简单的动画混合 Animation Mixing
[打印本页]
作者:
狂风大尉
时间:
2014-6-25 01:23
标题:
简单的动画混合 Animation Mixing
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);
}
复制代码
作者:
hyui
时间:
2014-6-25 02:34
Thanks for sharing your experience!
作者:
hariboot
时间:
2014-6-25 08:55
这代码很实用
作者:
wucnj
时间:
2014-6-25 09:03
感谢分享!!!
作者:
HIDEOKOJIMA
时间:
2014-6-25 16:52
感谢分享!
作者:
shenyg77
时间:
2014-8-12 21:02
Thanks for sharing !
欢迎光临 纳金网 (http://old.narkii.com/club/)
Powered by Discuz! X2.5