如何确定圆形对撞机是否通过边缘对撞机触发器,或在碰撞过程中返回?

时间:2014-03-01 16:12:22

标签: c# triggers unity3d

在Unity 4.3,2D模式和C#中工作。我有一个玩家控制的圆圈,有一个圆形对撞机和一个不规则形状的静态边缘对撞机。边缘对撞机处于触发模式。

一旦圆圈完全穿过边缘对撞机,圆圈应该以某种方式作出反应,但如果圆圈与它发生碰撞则不会发生反应,并转向它所来自的相同方向。圆圈应该能够随机旋转并从任何方向或角度以任何速度穿过边缘对撞机。

我正在尝试使用OnTriggerExit2D,但我无法检查圆圈是否通过或返回,因为OnTriggerExit2D在两种情况下都会启动。这是一张图片来澄清:

Circle Edge

提前谢谢,这让我过去几天疯狂。

1 个答案:

答案 0 :(得分:0)

也许您可以在OnTriggerEnter2D中记录对象的位置,然后将其与OnTriggerExit2D中的当前位置进行比较。然后使用Physics2D.Linecast确定这些点之间是否存在对撞机 - 如果是,则通过。请注意,如果您的边缘碰撞器形状很复杂并且对象通常沿着边缘移动而不是穿过边缘,则这可能无法可靠地工作。