SceneKit: SCNPhysicsBody получить текущую скорость
Как я могу получить текущую скорость тела SCNPhyisicsBody?
Свойство скорости всегда возвращает (0.0, 0.0, 0.0), и физический элемент prensetationNode моего SCNNode также равен нулю.
2 ответа
Решение
Вы можете получить "текущую" скорость с
physicsBody.velocity
Но это справедливо только для обратных вызовов "игрового цикла" (updateAtTime, didApplyAnimations, didSimulatePhysics, will/didRenderScene).
... в вашем контроллере представления вы должны использовать протокол SCNSceneRendererDelegate, например
class GameViewController: UIViewController,SCNSceneRendererDelegate{...
и в методе viewDidLoad установите для делегата SCNView значение scnView.delegate=self
Тогда вы можете реализовать, например,
func renderer(renderer: SCNSceneRenderer, didRenderScene scene: SCNScene, atTime time: NSTimeInterval) {
let scnView = self.view as! SCNView
let scene = scnView.scene
let compass = scene?.rootNode.childNodeWithName("ObjectName", recursively: true)
print((compass?.physicsBody?.angularVelocity)!)
}
это работает в моем случае. надеюсь, это поможет немного!