
122
|
第
3
章
steering = rotationAngle / maximumSteerAngle
}
//
限制转向值在
-1.0
~
1.0
之间
steering = fmin(steering, 1.0)
steering = fmax(steering, -1.0)
print("Steering: \(steering)")
}
讨论
在上面的例子里,演示了当用户手持设备并做出一系列连续“转向”动作时该如何
处理:
-1.0
表示设备旋转至左满舵,
1.0
表示右满舵。
在横屏模式下,“转向”意味着设备正在做“俯仰”机动,即改变从屏幕左边到右
边这条直线的倾斜角。不过,“横屏”包括了两种持握设备的方式:“左横屏”表
示
Home
键在屏幕的左边,“右横屏”则表示
Home
键在屏幕的右边。换句话说,
右横屏和左横屏刚好做相反的镜像。
因此,如果我们想让
-1.0
始终表示左满舵,我们必须知道设备被持握的方向。可以
通过
UIApplication
的
shared
对象的
statusBarOrientation
属性来进行判断。
3.18
测量磁场
问题
在游戏中,如何知道设备附近有一块磁铁或磁体存在。
解决方案
首先,我们需要导入
Core Motion
框架。请参考本章问题
3.9
的内容。然后调用
CMMotionManager
类的
startMagnetometerUpdates(to:, withHandler:)
方法去开
启和监听内置磁力计的数据:
motionManager.startMagnetometerUpdates(to: ...