2

我有一个带有 EdgeCollider2D 的地形游戏对象和一个带有随机对撞机的角色游戏对象。我想在调用 OnCollisionEnter2D 时找到发生碰撞的 EdgeCollider2D 的哪一侧。我编写了这 3 个函数来实现这一点,但是它们太慢了(每当我的游戏对象与地形碰撞时,都会出现约 3 帧的延迟峰值)并且有时不精确。

有没有更快更精确的方法让我做到这一点?

我在 Pastebin 的代码上有一个小错字,第一个函数的末尾不应该有“Alt”......

示例图像在这里

4

2 回答 2

0

我有一个类似的问题,我必须知道碰撞发生在碰撞机的哪一侧,我担心经过大量搜索后,我认为没有有效的方法可以找到它。

所以,我所做的是在我的玩家周围附加了 4 个触发点(充当触发器的碰撞器),一旦被触发,它们就会调用它们自己独立的独立函数。这就是我能够从哪一侧/方向找出碰撞发生的方式。

于 2015-04-05T20:43:30.630 回答
0

您可以使用Collision2D.contacts. 它是一个ContactPoint2D[]并包含碰撞时传入的 Collider2D 对象接触/碰撞的所有点以及所有这些点的法线向量(以防您希望球沿着碰撞点的法线反弹)。

在大多数情况下,它通常包含单个点,但在某些情况下它可能会返回多个点,例如:一个盒子与另一个盒子碰撞(虽然两者都有 0 旋转),这将导致全脸碰撞并且显然有多个接触点。

于 2015-07-02T11:34:13.880 回答