更改 Physics.defaultContactOffset 对性能有重要影响吗?

Oli*_*ons 5 unity-game-engine

像往常一样,文档缺少一些我们必须在其他地方收集的信息:Physics.defaultContactOffset

碰撞检测系统使用 Physics.defaultContactOffset 来预测性地强制执行接触约束。

Unity 说明您应该使用 1 个单位 = 1 米进行物理模拟。

我需要很多小球体和立方体:10 厘米宽。因此0,1“单位”。

他们没有说的是,当您在小范围内工作时(我使用的是 0.1m 宽度 = 10cm 的对象),您必须将 Physics.defaultContactOffset 更改为比默认值更小的值。

因此我的问题是:Physics.defaultContactOffset 对计算很重要,即如果我将其更改为一个非常小的值,它是否会对性能产生负面影响?

我必须将它从0.001改为0.00001以获得可接受的碰撞检测系统,我担心会对性能产生负面影响。

Dav*_*ave 4

来自Unity3D 文档中关于默认接触偏移的内容:

使用此设置碰撞检测系统用于生成碰撞接触的距离。该值必须为正数,如果设置得太接近零,可能会导致抖动。默认设置为 0.01。仅当碰撞体的距离小于其接触偏移值之和时,碰撞体才会生成碰撞接触。

因此,我们可以假设物理引擎正在计算碰撞器之间的距离并检查该距离是否算作碰撞。我认为这对于性能来说并不重要,因为无论如何都会进行计算。

话虽如此,Unity3d 物理引擎对于微小物体的处理效果并不好,因此最好将球体缩放到 1 个单位,并缩放其他所有内容进行补偿。您很可能会遇到这些小型碰撞器的问题。