我试图找出Scene Kit的物理引擎中碰撞的力量。为了简单起见,我用下面的代码:为什么SCNPhysicsContact.collisionImpulse总是0.0?
extension MyScene: SCNPhysicsContactDelegate {
func physicsWorld(_ world: SCNPhysicsWorld, didBegin contact: SCNPhysicsContact) {
print("collisionImpulse=\(contact.collisionImpulse)")
}
的功能是根据contactBitmasks和collisionBitmasks但每次我得到的呼吁每个碰撞contact.collisionImpulse = 0.0
这是一个场景套件错误?难道我做错了什么?
我放弃了试图解决这个问题,并改用以下内容:
let factor: Float = 1.2
let relativeVelocity = contact.nodeA.physicsBody!.velocity - contact.nodeB.physicsBody!.velocity
let velMagnitude = relativeVelocity.length()
let force = min(velMagnitude*factor, 1.0)
为SCNVector3减法助手功能:
/// Vector subtract
func - (l: SCNVector3, r: SCNVector3) -> SCNVector3 {
return SCNVector3(l.x-r.x, l.y-r.y, l.z-r.z)
}
我有同样的问题,你有没有发现什么是错的? –
我没有。我使用上面提到的解决方法,但它不是真正解决问题的方法。 – eisental
终于找出原因,查看下面的答案。 –