ゲーム環境は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) を移動するにはどうすればよいですか?