我試圖找出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
終於找出原因,查看下面的答案。 –