2015-07-03 150 views
4

如何获取SCNPhyisicsBody的当前速度?SceneKit:SCNPhysicsBody获取当前速度

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

+0

您是否找到答案?另外你如何直接在SCNNode上设置速度? – Crashalot

回答

5

你可以得到

physicsBody.velocity 

“当前” 速度但这仅对内的 “游戏循环” 回调(updateAtTime,didApplyAnimations,didSimulatePhysics,将/ didRenderScene)。

+2

你是如何意识到这一点的?在文档中看不到这个公然提及的内容。 – Confused

+0

这是否意味着你只能在游戏循环回调中设置'velocity'?目前为止设置的速度似乎不起作用,但会尝试游戏循环回调。 @Confused – Crashalot

+0

我将不得不建立一个项目并检查。很长时间以来,一直没有对SceneKit物理学进行过修饰。 @Crashalot – Confused

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

这在我的情况下工作。 希望它有一点帮助!