나는 sprite-kit를 사용하여 게임을 만들고 있습니다. 내 게임에서는 가속도계를 사용하여 장치를 기울여 노드를 옆으로 움직입니다. 다음 코드는 매끄럽게 작동하지만 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이 지체 된 이유를 드디어 알아 냈
. 내가해야 할 일은 내 GameOver 장면에 motionManger.stopAccelerometerUpdates()
을 추가하는 것뿐이었습니다. 그렇게 한 후, GameScene 30 플러스 시간으로 다시 전환 할 것이고 그것은 잘 반응합니다! 희망이 작은 오류가 미래에 누군가를 도와줍니다!
당신이 확인 했습니까? 그렇지 않다면, 장면 클래스에'deinit {print "deinit"}'를 추가하고 새로운 장면으로 전환하십시오. – 0x141E
예 확인했는데 할당이 취소되었습니다. 내 해결책을 찾았 어. 신기한 실수! 내 gameover 함수에서 motionManger.stopAccelerometerUpdates()를 추가하는 것을 잊었습니다. – sicvayne