
输入
|
121
3.17
将设备当作方向盘
问题
你可能想让用户把设备当作方向盘用,在玩家驾驶的过程中不断获得数据。
解决方案
无论玩家驾驶多长时间,我们都可以获得想要的数据。你需要指定某个坐标轴作为
方向盘的“转向轴”,这样,
Core Motion
框架就能够沿这个轴计算出转动的方向。
大部分情况下,跟驾驶有关的游戏都采用了横屏模式。要确保游戏只运行在横屏模
式,需要在项目导航窗口中选中顶部的项目文件,然后在右边的
Info
窗口中找到
Device Orientation
栏,确保只有
Landscape Left
和
Landscape Right
两项选上。
然后,在项目中导入
Core Motion
框架
(参考问题
3.9
)。最后,添加一个
CMMotionManager
,然后用下列代码监听设备的运动通知:
motionManager.startDeviceMotionUpdates(to: OperationQueue.main) {
(motion, error) -> Void in
//
确保有一个
CMDeviceMotion
可用
guard let motion = motion else {
if let error = error {
print("Error: \(error)")
}
return
}
//
最大转向角度,向左为
-50
度,
//
向右为
50
度
let maximumSteerAngle = 50.0
//
在横屏中,