Ich benutze den Beschleunigungsmesser als Lenkmechanismus für mein Spiel. Es funktioniert in der Regel gut, aber gelegentlich wird es sehr merkwürdig wirken. Zufällig gibt es plötzlich eine große Menge an Eingangsverzögerung und jede Rotation, die ich mache, ist für eine Weile nicht registriert. In einigen Fällen kann es zu einer großen Verzögerung zwischen den direkt nacheinander eingegebenen Befehlen kommen, was dazu führt, dass mein Charakter viel zu lange in eine Richtung driftet. Liegt das an Spielverzögerung oder ist mein Code fehlerhaft? Mein Code unten.Korrekter Weg zur Verwendung von Beschleunigungsmesser
actionMoveLeft = SKAction.moveBy(x: -3, y: 0, duration: 0.1)
actionMoveRight = SKAction.moveBy(x: 3, y: 0, duration: 0.1)
self.addChild(ship)
if motionManager.isAccelerometerAvailable == true {
motionManager.startAccelerometerUpdates(to: OperationQueue.current!, withHandler:{
data, error in
if (data!.acceleration.y) < -0.05 {
self.ship.run(self.actionMoveLeft)
}
else if data!.acceleration.y > 0.05 {
self.ship.run(self.actionMoveRight)
}
})
}