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

问题描述

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

注意我碰撞的块是墙壁和地面,所以我不能使用层名称等。

解决方法

1.

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

说它是一个立方体。

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

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

根据您的情况,您可以确切地知道是什么与什么发生了碰撞。

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

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

2.

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

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

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

--

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