swift - SpriteKit 加速度计并不总是准确或可能过于敏感

标签 swift sprite-kit swift3

我正在使用以下代码在我的游戏中实现 Action :

如果 motionManager.isAccelerometerAvailable == true {

    motionManager.startAccelerometerUpdates(to: OperationQueue.current!, withHandler: {

        data, error in

        let currentX = self.player.position.x

        self.destX = currentX + CGFloat((data?.acceleration.x)! * 200)

    })

}

然后在update(_ currentTime: CFTimeInterval)函数中:

let action = SKAction.moveTo(x: destX, duration: 0.2)

        self.player.run(action)

问题是它看起来真的很敏感, Sprite 有时会以相反的方式倾斜并且看起来到处都是,我认为这与设备的倾斜有关,我只想检测侧面到侧面运动。我错过了什么吗?

最佳答案

我会尝试直接在场景的更新方法中获取运动数据,因此每秒更新 60 次。我使用处理程序从来没有得到好的结果,即使您将间隔设置得非常低,它也总是很缓慢。

override func update(_ currentTime: TimeInterval) {
     if let data = motionManager.accelerometerData {
          let currentX = player.position.x
          destX = currentX + CGFloat((data.acceleration.x) * 200)
          ...
     }
 }

您可能需要调整 200 以获得所需的结果。我也会减少 SKAction 持续时间,0.2 太长了。或者尝试不使用 SKAction 直接更新您的 Sprite 位置。

希望对你有帮助

关于swift - SpriteKit 加速度计并不总是准确或可能过于敏感,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41022856/

相关文章:

ios - 如何使数组包含一个PDF文件

ios - 国际象棋游戏的 Sprite Kit 游戏设计

sprite - 通过 SKAction 改变颜色?

ios - SpriteKit 按钮保持按下状态

ios - 从 View Controller Swift 更新 Collection View

高度约束发生变化时的 iOS Autolayout 问题

ios - 如何明确设置 UITabBar 背景颜色和色调颜色

ios - WKInterfacePicker 列表中的图片样式

ios - 如何在 iPhone 4/4S 屏幕的指定部分设置摄像头?

ios - 表格单元格高度大小不正确