[英]Reverse animation in unity 3D
我有一个带有动画的FBX对象。 该对象是带有动画的框,用于打开。 我要做的是,当用户单击按钮时,该框将打开(播放打开的动画),当再次单击该按钮时,该框将关闭(向后播放打开的动画)。
在播放开始动画时,我再次单击按钮,开始动画停止,并且框开始关闭,这很好。 问题在于,当动画完成(打开)然后单击按钮关闭时,动画不会播放,它只会跳到没有动画的关闭框。
这是我的代码:
public class ClickBtn : MonoBehaviour {
public GameObject box = null;
bool reverse = false;
private void OnMouseDown()
{
Debug.Log(reverse);
if (!reverse)
{
box.animation["Take 001"].speed = 1;
}
else
{
box.animation["Take 001"].speed = -1;
}
reverse = !reverse;
box.animation.Play("Take 001");
}
}
您的animation.WrapMode设置错误(可能是WrapMode.Once,这是默认设置)。 在您的情况下,您可以使用:
WrapMode.PingPong:在开始和结束之间来回乒乓球。
animation.wrapMode = WrapMode.PingPong;
介意你,你不需要
box.animation["Take 001"].speed = -1;
而且,这是自动完成的。
动画完成后,其时间将重置为开始。
简单的解决方法将时间设置为在向后播放之前结束。
public GameObject box;
bool direction = false;
private void OnMouseDown()
{
Debug.Log(direction);
if (!direction)
{
box.animation["Take 001"].speed = 1;
}
else
{
box.animation["Take 001"].speed = -1;
//if animation already finisihed, set time to end before playing it backwards
if(!box.animation.isPlaying){
box.animation["Take 001"].time =box.animation["Take 001"].clip.length;
}
}
direction = !direction;
box.animation.Play("Take 001");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.