如何检测我从 OnCollisionExit2D() 退出的对象的哪一侧

How do I detect which side of the object I exited from on OnCollisionExit2D()

我可以检测到我与物体的哪一侧发生碰撞,但是我需要在退出碰撞时重置一些变量。如何判断我从对象的哪一侧退出? (即,如果我与地面发生碰撞,然后我与左侧的墙壁发生碰撞,然后向右移动,我需要知道我是否已经从与墙壁的碰撞中退出,或者我是否从与地面的碰撞中退出。)

请注意,我碰撞的方块既有墙也有地面,所以我不能使用图层名称等。

1.

我真的很难理解这个问题,但一个常见的技巧是你实际上在对象上有 多个碰撞器

说是立方体。

而不是有一个立方体形状的对撞机,实际上有六个对撞机!

(所以,基本上是扁平的,无论你想使用什么技术。)

根据你的情况,你会确切地知道什么与什么相撞。

我真的不明白这个问题,但我想你想知道,在六个中,哪个是“最后一个”被触及的。

当然,作为一个基本的编程问题,这很容易实现,只要弄清楚最后触摸了六个中的哪一个

2.

请注意,正如 BugFinder 所解释的那样。当你“离开”的时候,只看你的新速度,也就是看你速度的方向。

显然,这会立即告诉您另一个物体的“哪个部分”,您一定已经反弹了。

另请注意,您确实可以简单地从新速度向后投掷,然后看看您击中了什么 - 这很可能是您反弹的原因!

--

请注意,PhysX 可以将事物遮罩到同一帧中,当您在角落时“最后触摸”什么的想法可能会有问题。这就是为什么“2”是一种常见的方法。