SCNCamera移动与iPhone加速度计同步

时间:2017-02-10 13:05:03

标签: scenekit

我正在开发一个包含场景(SceneKit)的iOS / Swift项目。 我想要做的是在用户旋转手机时旋转SCNCamera

这就是我所做的:

    motionManager = CMMotionManager()
    motionManager.accelerometerUpdateInterval = 0.1

    motionManager.startAccelerometerUpdates(to: OperationQueue.main) { [weak self] (data: CMAccelerometerData?, error: Error?) in self?.update_rotation(p: (data?.acceleration)!) }

并在update_rotation函数中:

   camera_node.eulerAngles = SCNVector3Make(angle_x,angle_y,angle_z)

camera_node是我的SCNNode相机对象。 angle_xangle_z是根据加速度计数据计算得出的。 (我只是将加速度计值乘以90并将其转换为弧度)。 angle_y是从指南针(北角)计算的。

我的问题来自angle_z。这很奇怪,因为eulerAngles.z属性的行为取决于angle_y值。 换句话说,如果朝北方向看,一切都很好。 当我向南看时,angle_z需要倒置。 我不明白为什么。

1 个答案:

答案 0 :(得分:0)

def main():

    # your code goes here

    if input('Play again?') == 'yes':
        main()

我在iPad上使用我的游乐场应用程序尝试此操作