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)!)
}

это работает в моем случае. надеюсь, это поможет немного!

Другие вопросы по тегам