だから私はゲームオブジェクトを動かすスクリプトを持っています。ゲームオブジェクトを一度動かすとスムーズです。しかし、2 度目に動かすと、動きが非常に遅くなり、少しバギーに見えます。
移動スクリプトの最初の入力はオブジェクトで、次に移動する必要がある位置と最後のパラメータとして速度です。すべての座標は localposition に基づいています。2 番目の楽章を実行する前に待機したいので、wait を使用します。
他のオブジェクトも 2 回動かそうとしましたが、すべてのオブジェクトの動きが非常に遅くなり、バグが発生します。
これを Update で実行したくないので、コルーチンを使用します。
これが私のコードです:
IEnumerator MovementGentryOne()
{
StartCoroutine(Movement(GentryOne, MovementCoords.GentryOneBasin, gentryspeed));
yield return new WaitForSeconds(2);
StartCoroutine(Movement(GentryOneArm, MovementCoords.GentryArmMoved, gentryspeed));
yield return new WaitForSeconds(2);
StartCoroutine(Movement(GentryOnePicker, MovementCoords.GentryPickerPick, gentryspeed));
yield return new WaitForSeconds(4);
//this one is not working smooth.
StartCoroutine(Movement(GentryOnePicker, MovementCoords.GentryPickerStart, gentryspeed));
yield return null;
}
private IEnumerator Movement(GameObject toMove, Vector3 position, float time)
{
float elapsedTime = 0;
while (elapsedTime < time)
{
toMove.transform.localPosition = Vector3.Lerp(toMove.transform.localPosition, position, (elapsedTime / time));
elapsedTime += Time.deltaTime;
yield return null;
}
toMove.transform.localPosition = position;
}
誰が何がうまくいかないのか考えていますか?
敬具