我正在使用精靈套件進行遊戲。在我的遊戲中,我使用加速度計通過傾斜設備將節點一側移動到另一側。下面的代碼運行平穩,但在8-10次重新啓動遊戲後,對傾斜的反應有點滯後。然後我關閉應用程序,問題自行重複。SpriteKit加速度計問題
我在didMove(to view: SKView)
motionManger.startAccelerometerUpdates()
,並有一個看起來功能像這樣
func processUserMotion(forUpdate currentTime: CFTimeInterval) {
Ball.position.x += xAcceleration * 50 // xAcceleration is a variable that is a CGFloat = 0
motionManger.accelerometerUpdateInterval = 0.1
motionManger.startAccelerometerUpdates(to: OperationQueue.current!) { (data:CMAccelerometerData?, error:Error?) in
if let accelerometerData = data {
let acceleration = accelerometerData.acceleration
self.xAcceleration = CGFloat(acceleration.x) * 0.75 + self.xAcceleration * 0.25
}
}
}
override func update(_ currentTime: TimeInterval) {
processUserMotion(forUpdate: currentTime)
}
任何想法,爲什麼這種情況正在發生或有更好的方式,使節點響應以及當裝置被傾斜到左,右?謝謝!
更新:
我終於明白爲什麼accelorometer滯後。我所要做的只是將motionManger.stopAccelerometerUpdates()
添加到我的GameOver場景中。這樣做後,我會回到GameScene 30加倍的時間,並且它反應良好!希望這個小小的錯誤能夠幫助未來的人!
你檢查現場被釋放?如果沒有,請將'deinit {print「deinit」}'添加到場景類並轉換到新場景。 – 0x141E
是的,我沒有檢查,它正在被釋放。我發現我的解決方案。菜鳥錯誤!在我的遊戲轉移功能中,我忘了添加motionManger.stopAccelerometerUpdates()。 – sicvayne