好的,所以我做了一些学习的事情,我需要我的电梯停下来几秒钟
private IEnumerator ReversePlatform()
{
yield return new WaitForSeconds(2);
_AccuTime = 0;
speed = -speed;
}
我在这里打电话,我的电梯开始摇晃并上升,他们不会下降
if (_AccuTime > _RunTime)
{
StartCoroutine("ReversePlatform");
}
else
{
transform.Translate(0, speed * Time.deltaTime, 0);
}
我需要它们上升,停留2秒左右,然后持续下降
这是因为
StartCoroutine
可以多次启动同一个协程,因此您从未添加检查来确保 ReversePlatform
尚未运行:
private Coroutine reverseCoroutine;
private IEnumerator ReversePlatform()
{
yield return new WaitForSeconds(2);
_AccuTime = 0;
speed = -speed;
reverseCoroutine = null;
}
if (_AccuTime > _RunTime)
{
if (reverseCoroutine == null)
{
reverseCoroutine = StartCoroutine("ReversePlatform");
}
}
else
{
transform.Translate(0, speed * Time.deltaTime, 0);
}