Unity3D 中是否有碰撞检测的替代方案?

Are There Alternatives to Collision Detection in Unity3D?

所以,我正在开发一款游戏,我已经 运行 解决了这个问题......我正在尝试检测两个物体的碰撞,起初我认为我需要两个对撞机。然后我发现我需要一个刚体,现在我发现两个对象都需要一个刚体,这是很多 cpu 用法,刚体仅用于检测这些碰撞。它极大地限制了我在一个场景中可以拥有多少对象。

我能想到的唯一解决办法是从每一侧投射小光线。是否还有其他更优化的行业标准解决方案?

提前致谢

没有办法完全按照你的意愿去做。由于您没有描述您打算做什么(即使是 2D 或 3D),这里有一个通用的解决方案:
1) 仅将 Rigidbody 附加到其中一个对象(可能发生碰撞的两个对象中)
2) 在 Rigidbody 上勾选 IsKinematic,这样它就不会对 Physics
产生反应 3) 在另一个对象的 Collider 上勾选 isTrigger(这样它就不需要 Rigidbody 但当用 非触发 [=41= 击中另一个对象时会触发触发事件](!!!) 对撞机( 刚体)

(或在所有 GO 上使用 Rigidbody,但在所有 GO 上勾选 IsKinematic)


关于您自己的碰撞检测,请参阅@Hellium 的评论。
我要补充一点,如果您编写自己的碰撞检测代码,那么在一天结束时您很可能会得到一个消耗更多计算量的代码。时间(并且可能至少有点草率)。
仅仅是因为您将使用脚本而不是 C++ 进行编码,并且引擎的碰撞检测是 C++。 (您的 .net 脚本将通过 il2cpp 编译为本机,因此不是本机实现 == 必须比具有类似性质但受引擎支持的代码慢,即用 c++ 编码)

旁注:如果您找到您的应用。 运行宁慢,那不一定是因为碰撞检测。 您的代码并非不可能,当您检测到碰撞时您所做的 运行宁慢。
我强烈建议使用 the profiler 来查看是什么让您的应用程序变慢了。
如果它确实是您的代码,post 一个关于如何使它 运行 更快的问题。