如何检测对撞机并停止向该方向移动?

时间:2018-03-06 14:08:10

标签: unity3d collision

我希望我的立方体能够检测到所有侧面的对撞机并停止向该方向移动 如图所示,A和B阻碍了我的立方体的路径 我想达到这样的目标:如果我按下W我希望我的物体保持静止而不移动但是如果我按D它应该向右移动因为没有障碍物在那里
我该怎么做呢?我知道如何使用Raycasting检测对象,但我无法计算它们是在我的立方体的前面,后面左侧还是右侧?

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以在所有4个方向进行光线投射。对于“W”,仅需要Vector3.ForwardVector3.Up是全球性的。从上方查看场景时Vector3.forward“向上”。 Vector3.right是自我解释的。

注意:按“W”键会发生什么? “D”在同一时间? ;)如果你向右上45°,你可能会有另一个问题。

所以最后我建议你做各个方向的8次射线投影。

对于调试我建议您使用Debug.DrawLine

如果这听起来太复杂,为什么不抓一raycasts而只使用rigidbody + collider?其他colliders需要非触发。这样就可以在没有raycasts的情况下阻止你的播放器。