所以,我正在开发一款游戏,我遇到了这个问题......我正试图检测两个物体的碰撞,起初我以为我需要两个碰撞器。然后我发现我需要一个刚体,现在我发现这两个物体需要一个刚体,这是很多cpu的使用,刚体仅用于检测这些碰撞。它极大地限制了我在场景中可以拥有的物体数量。
我唯一可以解决的解决方案是从每一侧投射小射线。还有其他更优化的行业标准解决方案吗?
提前致谢
答案 0 :(得分:4)
没有办法完全按照自己的意愿行事。由于您没有描述您打算做什么(即使是2D或3D),这里也是一个通用的解决方案:
1)仅将Rigidbody
附加到其中一个对象(两个可能发生碰撞的对象)中
2)在IsKinematic
Rigidbody
上勾选,这样就不会对物理作出反应
3)在isTrigger
上勾选另一个对象的对撞机(因此当用非触发器击中另一个对象时,它不需要Rigidbody
但是还会触发触发事件(!!!)对撞机(和一个刚体)
(或者在你所有的GO上使用Rigidbody
,然后在IsKinematic
上勾选所有这些)
<登记/>
至于你自己的碰撞检测,请参阅@ Hellium的评论。
我要补充一点,如果你编写自己的碰撞检测代码,那么在一天结束时你最有可能最终会得到一个吃更多计算的代码。时间(可能至少有点草率)
仅仅因为你在脚本中编写代码,而不是C ++,引擎的碰撞检测就是C ++。 (您的.net脚本将通过il2cpp编译为本机,因此本机实现==必须比具有相似性质的代码慢,但引擎支持,即用c ++编写)
旁注:如果找到您的应用。运行缓慢,不一定是因为碰撞检测。当您检测到碰撞运行缓慢时,您的代码,您做的情况并非不可能。
我强烈建议您使用the profiler来查看应用程序中的内容
如果它确实是您的代码,请发布有关如何更快运行的问题。