gpt4 book ai didi

iOS 核心运动在汽车、火车、飞机上漂移

转载 作者:行者123 更新时间:2023-11-29 02:23:19 26 4
gpt4 key购买 nike

我从我的用户那里得到反馈,“有时”我的游戏应用程序有一个错误,那就是飞船变得完全无法控制。对此进行调查后,看起来 CoreMotion 报告的态度漂移得非常快(不到一秒),而且它是突然发生的。您最多可以玩五分钟,然后船突然移动到屏幕边界之一,并且不再离开该点。

我的问题:有没有人对 CoreMotion 态度有过同样的体验?你有什么方法或想法来控制这种突然的、巨大的漂移?

我用来在 SpriteKit 的 update() 中获取态度的代码是:

if let motion = motionManager.deviceMotion {
let x = CGFloat(motion.attitude.yaw - basePosition.x)
let y = CGFloat(motion.attitude.roll - basePosition.y)
ship.physicsBody?.applyImpulse(CGVectorMake(X_SENSITITVITY * x, Y_SENSITITVITY * y))
}

其中 basePositionX_SENSITITVITYY_SENSITITVITY 是游戏中的常数值。motionManager 由类顶部的 private var motionManager = CMMotionManager() 定义。

据我了解文档,deviceMotion 使用重力和姿态测量的组合以某种方式最小化长期漂移。

也许还需要注意:当游戏在没有汽车振动等的安静环境中运行时,它运行得非常好。我想让人们在需要休息的时候玩我的游戏——比如在长途火车或飞机上——或者 children 坐在汽车后座上。

最佳答案

我发现了同样的漂移问题。我将 CMDeviceMotion 的姿态与 CLLocation 的磁头进行了比较。因此,我绕着一张小 table 走了 10 圈,并在每圈之后将设备放在完全相同的位置。

我发现,DeviceMotion 的姿态每轮都会漂移 30 度左右。因此,10 轮后,姿态发生了大约 300 度的偏差。根据 Apple WWDC 2012 演讲“Session 524:Understanding coremotion”,所使用的传感器融合取决于指定的引用系。 Phil Adam 提到,如果指定了 xArbitraryCorrected 引用系,传感器融合算法也会使用磁力计。我用 xArbitrary、xArbitraryCorrected 和 xMagneticNorth 做了同样的测试,但没有区别。罗盘的不确定度约为 2 - 3 度(航向过滤器为 1.0 度)。

也许这是一个错误,我不知道。但我预计 xArbitrary 和 xArbitraryCorrected 之间至少存在差异。

关于iOS 核心运动在汽车、火车、飞机上漂移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27857047/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com