我试图在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)