检测与自身碰撞的物体 - 蛇或绳索示例

Detecting an object colliding with itself - snake or rope example

我有一个为游戏对象创建的自定义网格。我想在它接触到自己时做一些动作。我尝试将对撞机和脚本附加到网格。但是,只有在与其他对象发生碰撞时才会调用该脚本。如何检测与自身的碰撞?

在游戏物理引擎(例如 PhysX)中:碰撞体可以与自身碰撞没有任何意义。

请注意,在游戏和 3D 工程中,"things" 几乎总是有 多个 collider

例如,一只小狗可能由,哦,七个左右的碰撞器组成(你可以想象一个用于躯干(可能是那里的球体),四个腿(可能是胶囊或只是矩形),一个用于头部(又是球体),如果在游戏中与尾巴相关(可能只是一个矩形 - 或者可能是两个小球体)。对于汽车,你可能会说车身的整体形状是三个盒子,你可能有"where you need to know what hit" 的单个碰撞器 ... 例如,保险杠,如果您希望它在那里被撞,可能是门,等等。

现在,

关于你的问题,看起来你有——例如——一个类人动物,它有许多碰撞器,如前一段所述。

可能是,例如,手臂碰撞器可以击中腿部碰撞器,而您想知道这一点。

你的问题不可能帮到你,除非你笼统地解释一下你的场景是什么...

--

如果您要制作 蛇或绳索,请按照 Gunnar 所说的进行操作。最简单的解决方案是多个球体碰撞器。

简单地说你的蛇有10厘米粗。假设你的蛇有 2 米长。很简单,球体碰撞器的大小约为 9-10 厘米。把它们分开,这样它们就不会相互接触,而是有点间隔。所以对于 2m 你可能有大约 15 个。仅此而已。

请注意工程绳索/蛇绝非易事。

我鼓励您浏览 AssetStore 并查看可用的可能优秀的 rope/snake 包。

意识到需要 man-years 的工程学才能开发出完美的绳索系统。

了解 Unity(或一般的游戏工程)的一个日常方面是,您必须使用现有的、通常是 well-known 的解决方案来解决手头的问题。祝你好运。