我正在尝试基于计时器在两个对象之间创建一个目标 lerp。
目前,我有以下代码:
float distCovered = (Time.time - waitTime) * speed;
float fracJourney = distCovered / journeyLength;
if (_moveDown == false)
{
if (startTime + waitTime < Time.time)
{
transform.position = Vector3.Lerp(start.position, end.position, fracJourney);
if (transform.position == end.position)
{
Debug.Log("going down");
_moveDown = true;
transform.position = Vector3.Lerp(end.position, start.position, fracJourney);
}
}
}
if (_moveDown == true)
{
float distCovered1 = (Time.time - goDowntimer) * speed;
float fracJourney1 = distCovered1 / journeyLength;
transform.position = Vector3.Lerp(end.position, start.position, fracJourney1);
if (transform.position == start.position)
{
Debug.Log("going up");
// waitTime = 20;
_moveDown = false;
}
}
此代码在我的更新函数中,并附加到我要上下移动的每个对象。每个对象都可以独立于其他对象设置它们的等待时间,因此我可以在 5 秒后移动 1 次,在 10 秒后移动一次,以此类推。
然后,每个目标等待几秒钟,然后向下移动。但是,运动并不顺畅,而且往往会跳跃一段设定的距离。但是,当它回到底部时,它会在 _movedown 布尔值之间变得疯狂并且不会移动。
有谁知道我可以解决这些问题的方法?
我知道 Mathf.PingPong 方法会不断地在两点之间来回移动对象,但这不允许我在每个部分暂停移动。不过,如果有人知道我可以做到这一点的方法,也请告诉我。