Unity的移动设备输入

iOS与Android设备能够跟踪多个手指同时触摸屏幕的事件,通过访问 Input.touches 属性数组,我们可以访问在游戏的最后一帧中每个手指触摸屏幕的状态数据。

当设备移动时,其加速度计硬件会反馈沿三维空间中的三个主轴的线性加速度变化。我们可以根据此数据来检测设备的当前方向(相对于地面)以及该方向上的任何即时更改。

沿着每个轴的加速度由硬件直接反馈为G-fource值。G-fource值1.0表示沿给定虚轴增加约+1g的载荷,而G-fource值-1.0表示负载-1g。如果我们将设备竖直握住(设备底部为主页按钮),则X轴向右为正,Y轴向上为正,Z轴向“我”为正。

我们可以通过 Input.acceleration 属性以获取加速度计数据,并使用 Input.deviceOrientation 属性来获取设备在三维空间中各方向的离散评估。当用户旋转设备,以不同的方式持有设备时,如果要重建游戏行为,检测方向上的改变是有必要的。

需要注意的是,每帧可以多次访问加速度计硬件。如果要访问从上一帧以来的所有加速度计样本,我们可以读取Input.accelerationEvents 属性数组,这在重建玩家动作,将加速度数据输入预测器或实施其他精确运动分析时非常有用。

 

相关函数:

1)public static AccelerationEvent GetAccelerationEvent(int index)

作用:获取某个加速度事件(AccelerationEvent,用于描述设备的加速度状态,包括加速度值(acceleration)和从上一次加速度计测量到现在的时间(deltaTime))。Input.accelerationEventCount属性记录了上一帧中加速度事件的测量次数,而Input.accelerationEvents属性数组则保存了上一帧中的每一个加速度事件,传给GetAccelerationEvent函数的参数index就是某加速度事件的属性数组下标。

 

2)public static Touch GetTouch(int index)

作用:获取某个Touch结构体(Touch结构体描述手指触摸屏幕的状态)。设备可以跟踪触摸屏上多种触摸数据,包括其相位(phase,即触摸是否开始、移动、停止、结束或取消)、其位置(position)以及触摸是单次接触还是几次敲击(tapCount)。设备还可以检测每两帧更新之间的触摸连续性,因此可以跨帧反馈一致的ID号并用于确定特定手指的移动方式。每帧更新后都需要重新调用GetTouch函数以获取设备的最新触摸信息,但fingerId属性可用于识别两帧之间的相同触摸Input.touchCount属性记录当前屏幕的触摸次数。 如果Input.touchCount大于零,则GetTouch索引将设置要检查的屏幕触摸。例如,Touch tc = Input.GetTouch(0); 表示获取第一次的触屏状态。该函数与触屏设备(或大多数移动设备)的输入相关。

你可能感兴趣的:(Unity,Scripting)