1

ゲーム環境は2Dです。物理なし。

ポイント A からポイント B に自動的に移動する gameObject(gO) タグの付いたボックスがあります。これに添付されたスクリプトには ff コードがあります。

transform.position = Vector3.Lerp (transform.position, targetPos, (Time.time-startTime)*0.0001f);

注:この動きは遅いです。

また、基本的に、別のボックスに当たった場合に現在の位置で停止することを示す raycast2d を追加しました。

if(hit){
        if (hit.collider.tag == "box") {
            canControl = false;
            canMove = false;
            canSpawn();
        }

} else {
    canMove = true;
}

これと上記のコードはどちらも boxMovementScript の更新プログラムに含まれています。

この時点で、すべて順調です。別のボックスの前にあるボックスを削除すると、別のボックスは targetPos に向かって移動し続けます。ボックスが邪魔になると、現在の位置で停止します。

ボックスを制御してより速く動かそうとすると、問題が発生します。その前に別のボックスがある場合は、ボックスをバイパスするだけで、ヒットは記録されません。私のムーブライトコードは以下です。これは、私の GameOBjectControllerScript の void Update にあります。

if (Input.GetKeyDown(KeyCode.D) && rX !=-100){
    box.transform.position = Vector3.Lerp(atom.transform.position, rightendpos, 1);
}

ここでの rightendpos は基本的に、現在の位置から 2 ボックス離れた vector3 の位置です。

ボックスが別のボックスにぶつかったときに停止するように、gameObject(box) を移動するにはどうすればよいですか?

4

1 に答える 1