📅  最后修改于: 2023-12-03 14:52:58.072000             🧑  作者: Mango
在动画播放时停止移动是一个常见的需求,下面介绍一种方法可以实现这个功能。
我们可以使用 Animator
组件来控制动画的播放,然后通过代码控制物体的移动。在播放动画时,我们可以暂停移动并记录当前位置,然后在动画播放完成后再继续移动。
具体的实现步骤如下:
Animator
组件,并创建动画状态机;Animator
组件,并播放动画;Update()
函数中检测动画是否播放完成,如果完成则继续移动。using UnityEngine;
public class MoveStopOnAnimation : MonoBehaviour
{
private Animator animator;
private bool hasStoppedMoving = false;
private Vector3 currentPos;
private void Awake()
{
animator = GetComponent<Animator>();
}
private void Start()
{
animator.Play("MoveAnimation");
}
private void Update()
{
if (!hasStoppedMoving && animator.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1.0f)
{
currentPos = transform.position;
hasStoppedMoving = true;
}
else if (hasStoppedMoving)
{
// Resume moving after animation has completed.
transform.position = currentPos + new Vector3(0.1f, 0.0f, 0.0f) * Time.deltaTime;
}
}
}
在上面的代码中,我们首先获取了 Animator
组件,然后在 Start()
函数中播放动画。
在 Update()
函数中,我们检测动画是否播放完成。如果完成了,则记录当前位置并停止移动。当动画播放完成后,我们将启动一个标记变量 hasStoppedMoving
并开始记录当前位置。
在动画停止移动后,我们可以在 Update()
函数中继续移动物体。为了简单起见,我们在这里使用了一个简单的向右移动方案,但当然你可以根据需要来实现。
使用 Animator
组件可以方便地控制动画的播放。在执行动画时停止移动也是一种常见的需求,可以通过暂停移动并记录当前位置来实现。上面提供的代码可以作为参考来实现类似的功能。