タイマーに基づいて 2 つのオブジェクト間でターゲット 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;
}
}
このコードは update 関数にあり、上下に移動する各オブジェクトにアタッチされています。各オブジェクトは、他のオブジェクトとは独立して待機時間を設定できるため、5 秒後に 1 つの移動、10 秒後に別の移動などを行うことができます。
その後、各ターゲットは数秒待ってから下に戻ります。ただ、動きは滑らかではなく、一定の距離をジャンプしがちです。しかし、その後、底に戻ると、_movedown bool の間でおかしくなり、動かなくなります。
これらの問題を解決する方法を知っている人はいますか?
オブジェクトを常に 2 点間で前後に移動させる Mathf.PingPong メソッドは知っていますが、各セクションで移動を一時停止することはできません。とはいえ、これを行う方法を誰かが知っている場合は、私にも知らせてください。