【问题标题】:How to determine whether a circle collider goes through an edge collider trigger, or turns back during collision?如何确定圆形对撞机是通过边缘对撞机触发器,还是在碰撞过程中返回?
【发布时间】:2014-03-03 00:01:00
【问题描述】:

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

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

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

提前谢谢,这几天让我发疯了。

【问题讨论】:

  • 欢迎来到 Stack Overflow!请不要包含有关问题标题中使用的语言的信息,除非没有它就没有意义。标记用于此目的。

标签: c# triggers unity3d


【解决方案1】:

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

【讨论】:

  • Kititti Arttu,不知道这个 linecast。我的游戏是一个改变重力的物理谜题,边缘对撞机作为地面的连续对撞机工作 - 所以它非常复杂。我现在有一个可行的 MacGyver 解决方案,我会尽快发布。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多