【发布时间】:2011-04-26 09:12:35
【问题描述】:
我对 Unity 很陌生,正在做一个小例子。实际上我有一个立方体,它用我的箭头键移动。现在我在路上有墙,我希望我的物体撞到墙上,但它穿过了墙。
我也用过这段代码,但没有结果:
http://www.unifycommunity.com/wiki/index.php?title=DontGoThroughThings
【问题讨论】:
标签: collision-detection unity3d
我对 Unity 很陌生,正在做一个小例子。实际上我有一个立方体,它用我的箭头键移动。现在我在路上有墙,我希望我的物体撞到墙上,但它穿过了墙。
我也用过这段代码,但没有结果:
http://www.unifycommunity.com/wiki/index.php?title=DontGoThroughThings
【问题讨论】:
标签: collision-detection unity3d
一般的想法是跟踪对象的最后一个位置,然后当它们移动时,将一条射线从当前位置投射到最后一个位置。检查光线是否有碰撞,如果有碰撞,则说明您已经穿过了一个物体。
如果您已经穿过另一个对象,请将当前对象设置为碰撞报告的位置。下一帧将触发碰撞事件。
您提供的链接实际上是这样做的。
【讨论】:
Is Kinematic 并且力不会影响它。
如果你正在做类似的事情:
transform.velocity.x += speed * Time.deltaTime;
这不适用于碰撞,因为您实际上并没有与任何东西发生碰撞,您只是每帧按固定量传送。这会让你真正地传送到一个物体的内部。
【讨论】: