和往常一样,该文档缺少一些我们必须从其他地方收集的信息:Physics.defaultContactOffset。
Physics.defaultContactOffset被碰撞检测系统用来预测性地执行接触约束。
Unity说明您应该使用1单位= 1米进行物理模拟。
我需要很多小球和立方体:10厘米宽。因此0,1
是“单位”。
他们不说的是,当您进行小规模工作时(我正在使用0.1m宽度= 10cm的对象),您必须将Physics.defaultContactOffset更改为小于默认值。
因此,我的问题是:Physics.defaultContactOffset对于计算是否重要,也就是说,如果我将其更改为非常小的值,是否会对性能产生负面影响?
我必须将其从0.001
更改为0.00001
才能获得可接受的碰撞检测系统,我担心会对性能产生负面影响。
答案 0 :(得分:2)
从Unity3D documentation开始,使用默认联系人偏移量
使用此设置碰撞检测系统用于 产生碰撞接触。该值必须为正,如果已设置,则为 太接近零,会导致抖动。设置为0.01 默认。碰撞器只有在距离一定的情况下才会产生碰撞接触 小于其接触偏移值的总和。
因此,我们可以假设物理引擎正在计算对撞机之间的距离,并检查该距离是否算作碰撞。我认为对于性能而言,它并不重要,因为无论如何都要进行计算。
说了这么多,Unity3d物理引擎在微小物体上的效果并不理想,因此最好将球体缩放到1个单位,然后对其他所有物体进行缩放以进行补偿。您很可能会遇到这些小型对撞机的问题。