Box2D:如何检测多边形的哪一侧发生碰撞

时间:2014-04-21 18:43:36

标签: box2d

一个小矩形朝向一个较大的矩形。我想知道它是否会击中"侧面的大矩形"或者在"顶部"。

我还想检测较小的多边形是否在自己的侧面,顶部或底部停留。我想象一下,这将需要在身体上使用GetAngle()来检测它是如何定向的,但是我想听听是否有更好的方法。

由于

1 个答案:

答案 0 :(得分:2)

你可以创建你的“物体碰撞”作为多个装置。使用多边形或方形形状作为主夹具。然后在周边附加几个零质量固定装置作为“传感器”,并在所有这些装置中使用用户标签来确定哪一个在碰撞中被击中。

此图显示了基本概念:

enter image description here

通过这种方式,Box2D将处理所有处理您受影响或首先受影响的角度的工作。

这项技术仅适用于四边的盒子。您可以将它用于需要碰撞的任何身体,根据碰撞的位置做“不同的事情”。

注意:您可能需要打开连续碰撞检测和/或将小盒子设置为“子弹”,这样它就无法通过其中一个传感器。或者使传感器非常大(更多地扩展到主要目标的形状)。或者,您可以使模拟步骤更小(固定时间很短),以便在模拟步骤中行进的距离远小于边缘接触夹具的宽度。这两种想法的目标都是避免“挖掘”。

如果您不使用传感器方法,您可以尝试使用几何体以及所涉及的两个物体中的每个物体的速度矢量和旋转角度(在撞击之前),但这听起来有点像痛苦。

这有用吗?