SceneKit:SCNPhysicsBody 获取当前速度

SceneKit : SCNPhysicsBody get current velocity

如何获取 SCNPhyisicsBody 的当前速度?

速度属性总是return(0.0,0.0,0.0),我的SCNNode的prensetationNode的physicsBody也是nil

您可以通过

获得"current"速度
physicsBody.velocity

但这仅在 "game loop" 回调(updateAtTime、didApplyAnimations、didSimulatePhysics、will/didRenderScene)中有效。

...在您的视图控制器中,您必须使用 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)!)
}

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