1
我正在一個包含場景(SceneKit)的iOS/Swift項目。 我想要做的是在用戶旋轉手機時旋轉SCNCamera
。SCNCamera運動同步到iPhone加速計
這裏是我做了什麼:
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_x
和angle_z
。 (我只是將加速度計值乘以90,然後將其轉換爲弧度)。從指南針(北角)計算出angle_y
。
我的問題來自angle_z
。這很奇怪,因爲eulerAngles.z
屬性的行爲取決於angle_y
的值。換句話說,如果朝北方向看,一切都很好。 當我向南看時,angle_z
需要倒置。 我不明白爲什麼。
有完全相同的問題。我刪除了SCNVector3中的兩個減號,因爲我正在使用Landscape - home left。如果我將手機向左/向右傾斜,當我向後看時,這不起作用 – Bob5421