SceneKit:SCNPhysicsBody获取当前速度

时间:2015-07-03 21:56:23

标签: objective-c xcode swift physics scenekit

如何获得SCNPhyisicsBody的当前速度?

velocity属性总是返回(0.0,0.0,0.0),而我的SCNNode的prensetationNode的physicsBody也是nil。

2 个答案:

答案 0 :(得分:5)

你可以得到"当前"速度

physicsBody.velocity

但这仅在"游戏循环中有效#34;回调(updateAtTime,didApplyAnimations,didSimulatePhysics,will / didRenderScene)。

答案 1 :(得分:1)

...在您的视图控制器中,您必须使用SCNSceneRendererDelegate协议,如

class GameViewController: UIViewController,SCNSceneRendererDelegate{...

并在viewDidLoad方法中将SCNView委托设置为     scnView.delegate =自

然后你可以实现例如

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

这适用于我的情况。 希望它有所帮助!