iOS Swift处理程序Gyro手机移动时更新

时间:2018-06-18 07:47:43

标签: ios swift core-motion

我正在使用SceneKit和SpriteKit构建iOS游戏。

我正试图沿着y轴移动陀螺仪的更新来移动我的玩家对象。

一切正常,除非用户开始四处走动,并将自己转向另一个位置。

在这种情况下,玩家对象随他移动而且很难使用游戏..

如果y旋转速率与z旋转速率混合......

任何提示?

func startMotionManager() {
        isUpdatingPlayer = true
        motionManager.startGyroUpdates(to: OperationQueue.current!) { (gyroData, error) in
            if let data = gyroData {
                self.gyroRotation = data.rotationRate.y
            }
        }
    }

override func didSimulatePhysics() {
        let mirrorWidth: CGFloat = 15
        let min = (player.size.width / 2) + mirrorWidth
        let max = frame.width - (player.size.width / 2) - mirrorWidth
        let newPosition = player.position.x + CGFloat(gyroRotation) * 4
        if (newPosition < min) {
            playerDidCollideWithLeftBarrier()
            player.position.x = min
            return
        } else if (newPosition > max) {
            player.position.x = max
            playerDidCollideWithRightBarrier()
            return
        } else {
            player.position.x = newPosition
        }
    }

0 个答案:

没有答案