我有一艘太空船,我试图根据设备倾斜向左或向右移动。我坐着玩时,代码工作正常。当iPhone向右倾斜时,太空飞船向右移动;向左倾斜时,太空飞船向左移动。
问题-但是,当我平躺着躺着倾斜设备时,飞船朝相反的方向移动。
期望-无论我如何握住iPhone,我都希望飞船始终沿倾斜方向移动。
下面是代码。
设置Core Motion
func setupCoreMotion() {
motionManager.accelerometerUpdateInterval = 0.2
let queue = OperationQueue()
motionManager.startAccelerometerUpdates(to: queue, withHandler: {
accelerometerData, error in
guard let accelerometerData = accelerometerData else {
return
}
let acceleration = accelerometerData.acceleration
self.xAcceleration = (CGFloat(acceleration.y) * 1.75) + (self.xAcceleration * 0.25)
})
}
移动飞船
func moveSpaceship() {
if spaceship.position.x < 1935.00 && spaceship.position.x > 120.0 {
spaceship.physicsBody!.velocity.dx = xAcceleration * 3000.0
} else { //This is to slow down spaceship towards the edges
spaceship.physicsBody!.velocity.dx = xAcceleration * 1000.0
}
spaceshipPreviousPositionX.dx = spaceship.position.x
}