如何使用CoreMotion使SceneKit节点移动?

时间:2015-02-03 02:28:56

标签: ios gravity core-motion scenekit

我试图在scenekit中使用Core Motion在xy平面上移动一个简单的钟摆。视图处于横向模式,我的节点在我的场景包视图中开始看起来很好,但是没有响应任何设备移动。我希望它能够向下悬挂在真实的世界引力上,并且还能对侧向运动做出反应。钟摆以(0,0,0)为中心,枢轴点为(0,43.4,0)。据我所知,在横向模式下,我认为CM y轴是我的场景x轴。我以为我可以将场景重力分配给CM引力,但我不确定我是否正确地采用了这种方式。

let pendulum = scene.rootNode.childNodeWithName("Pendulum", recursively: true)!

//start accelerometer
let manager = CMMotionManager()

if manager.deviceMotionAvailable {
    manager.deviceMotionUpdateInterval = 0.01
    manager.startDeviceMotionUpdatesToQueue(NSOperationQueue.mainQueue()) {
        (data: CMDeviceMotion!, error: NSError!) in
        scene.physicsWorld.gravity = SCNVector3(x: Float(data.gravity.y), y: Float(data.gravity.x), z: 0)
    }
}

let pivotNode = SCNNode()
pivotNode.position = SCNVector3(x: 0, y: 43.4, z: 0)
let pivotAxis = SCNVector3(x: 0, y: 0, z: 1)

let pendulumShape = SCNPhysicsShape(node: pendulum, options: nil)
pendulum.physicsBody = SCNPhysicsBody(type: .Dynamic, shape: pendulumShape)

let pendulumMove = SCNPhysicsHingeJoint(body: pendulum.physicsBody!, axis: pivotAxis, anchor: pivotNode.position)
scene.physicsWorld.addBehavior(pendulumMove)

0 个答案:

没有答案