我有一个SceneKit SCNBox立方体应该跟随我的iphone的所有动作。因此,如果我的iphone横向旋转90度或360度,立方体也会旋转90度或360度,如果我向前旋转手机,立方体应该像手机一样旋转。
我尝试过使用startDeviceMotionUpdatesUsingReferenceFrame,但它与手机的动作不匹配:(
motionManager.deviceMotionUpdateInterval = 1.0 / 60.0
motionManager.startDeviceMotionUpdatesUsingReferenceFrame(
CMAttitudeReferenceFrame.XArbitraryZVertical,
toQueue: NSOperationQueue.mainQueue(),
withHandler: { (motion: CMDeviceMotion!, error: NSError!) -> Void in
let currentAttitude = motion.attitude
let roll = Float(currentAttitude.roll)
let pitch = Float(currentAttitude.pitch)
let yaw = Float(currentAttitude.yaw)
self.arrRoll.append(roll)
self.arrPitch.append(pitch)
self.arrYaw.append(yaw)
cubeNode.eulerAngles = SCNVector3Make(roll, 0.0, 0.0)
cubeNode.eulerAngles = SCNVector3Make(0.0, 0.0, pitch)
cubeNode.eulerAngles = SCNVector3Make(0.0, yaw, 0.0)
})
答案 0 :(得分:0)
你的代码片段有点脱离了上下文,但有一点让我感到震惊的是,你(很可能是无意中)覆盖了节点的eulerAngles
属性。
为什么你有3个独立的作业(只有最后一个作用有效),而不是:
cubeNode.eulerAngles = SCNVector3Make(roll, yaw, pitch)