[英]SceneKit – Geometry penetration
我认为您必须使用continuousCollisionDetectionThreshold
实例属性。 该值为您提供了人体必须经过的最小距离,以便SceneKit应用更精确的算法(但会花费更多的CPU / GPU)来检测与其他物体的接触。
var continuousCollisionDetectionThreshold: CGFloat { get set }
SceneKit的物理引擎可以采用两种碰撞检测 :
通过
discrete collision
检测,当SceneKit在渲染每一帧之前模拟物理过程时(请参见timeStep和SCNSceneRendererDelegate ),它将根据该时间间隔内物体的速度来更新每个物理物体的位置,然后检查该物体在其新位置是否相交其他身体。通过
continuous collision
检测,SceneKit会计算物体在每一帧中要遍历的体积,然后检查该体积是否与其他物体相交。 此属性的值defaults to 0.0
,从而始终导致离散冲突检测。 当此值不为零时,只要身体在timeStep内行进超过指定距离,SceneKit就会应用连续碰撞。
离散碰撞检测可提供高性能,但对于小型快速移动的物体可能会导致结果不准确。 连续碰撞检测具有性能成本,并且仅适用于球形物理形状,但可以提供更准确的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.