游戏环境是二维的。物理没有。
我有一个 gameObject(gO) 标记框,它自动从 A 点移动到 B 点。附加到它的脚本具有 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 的无效更新中。
if (Input.GetKeyDown(KeyCode.D) && rX !=-100){
box.transform.position = Vector3.Lerp(atom.transform.position, rightendpos, 1);
}
这里的 rightendpos 基本上是一个 vector3 位置,距离其当前位置两个框。
我应该如何移动我的 gameObject(box) 以便当盒子撞到另一个盒子时它会停止?