【发布时间】:2018-04-20 18:21:16
【问题描述】:
在我的项目中,我有一个对象和一些按钮。当我按下其中一个按钮时,对象会在协程中进行新的旋转。当用户在协程有机会第一次完成该方法之前按下按钮时,就会出现该错误。在这种情况下,它基本上会重新启动从开始旋转到新旋转的 slerp 运动。有没有办法防止这种情况发生?我可以使用布尔值来检查协程是否仍处于 slerp 的中间,但是理想的解决方案是在它所在的位置停止 slerp,然后 slerp 到新的旋转。下面是我在按钮上使用的协程:
public IEnumerator SlerpRotation(Transform trans, Quaternion slerpTo)
{
timer = 0;
Quaternion rotation = trans.localRotation;
while (timer < 2)
{
trans.localRotation = Quaternion.Slerp(rotation, slerpTo, timer/2f);
timer += Time.deltaTime;
yield return null;
}
}
在我使用这种方法之前,我有另一种方法,它基本上只是检查它是否等于其他两个角度并在两个角度之间切换。
【问题讨论】:
-
如果当前有一个协程正在运行,您可以设置一个标志,然后取消该协程或在第一个协程完成时排队启动新的协程...