私はシーンキットの物理エンジンの衝突の力を調べようとしています。なぜSCNPhysicsContact.collisionImpulseは常に0.0ですか?
は機能がcontactBitmasksとcollisionBitmasksが、私が取得するたびに応じて、各衝突のために呼び出されextension MyScene: SCNPhysicsContactDelegate {
func physicsWorld(_ world: SCNPhysicsWorld, didBegin contact: SCNPhysicsContact) {
print("collisionImpulse=\(contact.collisionImpulse)")
}
contact.collisionImpulse = 0.0
このシーンキットです:私は、次のコードを使用していますシンプルなものを維持するために、バグ?私は何か間違っているのですか?
私はこれを解決し、以下の代わりに使用しようとあきらめた:SCNVector3減算用
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)
ヘルパー機能:
/// Vector subtract
func - (l: SCNVector3, r: SCNVector3) -> SCNVector3 {
return SCNVector3(l.x-r.x, l.y-r.y, l.z-r.z)
}
私は同じ問題を抱えていますが、何が間違っているか分かりましたか? –
私はしませんでした。私は上記の回避策を使用しますが、実際問題の解決策ではありません。 – eisental
最後に、なぜ私の答えをチェックしてください。 –