Unity支持最常见的游戏输入设备类型,(如鼠标,键盘,游戏手柄等)同时还支持触摸屏和移动设备的感知能力。
Input包含于UnityEngine命名空间中,输入系统的接口。
通过这个类可以读取传统游戏输入中设置的轴,还可以可访问移动设备的多点触摸或加速感应数据。
使用输入读取轴GetAxis可读取一下默认轴名:Horizontal 和Vertical表示水平垂直映射到操纵杆,A,W,S,D和箭头键。“Mouse X"和”Mouse Y"映射到鼠标。“Fire1“,"Fire2", "Fire 3"被映射到Ctrl,Alt,Cmd键和三个鼠标或操纵杆按钮。可以添加新的输入轴,详细可以参阅输入管理器。 UnityEdit>>ProjectSetting>>Input 。
如果你使用输入来进行任何类型的运动行为,可以使用Input.GetAxis它可以给你带来平滑的和可配置的输入,可以映射到键盘,操纵杆或鼠标。可将GetButton视为事件之类的动作,最好不要用它来进行移动。使用GetAxis可将脚本代码更小和简单。
IOS 和Android 设备能够同时跟踪多个手指触摸屏幕。通过访问输入,你可以在最后一帧访问每个手指触摸屏幕的状态数据,触动属性数组。
当设备移动时,其硬件加速度计会报告沿三维空间的三个主轴的线性加速度变化。你可以使用这些数据来检测设备的当前方向(相对于地面)。
沿每个轴的加速度由硬件直接报告重力值。值1.0表示沿给定轴的负载大约+1g。值-1.0表示-1g.如果你将设备直立(底部有home键)放在你面前。x轴沿着右边是正的,y轴向上是正的,z轴正方向指向你。
静态属性
acceleration 最后测量到的三维空间设备的线性加速度(只读)
using UnityEngine;
PUblic class Example:MonoBehavier
{
//Move object using accelerometer
float speed = 10.f;
void Update()
{
Vector3 dir = Vector3.zero;
// we assume that device is held parallel to the ground
// and Home button is in the right hand
// remap device acceleration axis to game coordinates:
// 1) XY plane of the device is mapped onto XZ plane
// 2) rotated 90 of degree around Y axis
dir.x = -Input.acceleration.Y;
dir.z = Input.acceleration.X;
// clamp acceleration vector to unit sphere
if (dir.sqrMagnitude >1)
dir.Normalize();
// make it move 10 meters per second instead of 10 meters per fram....
dir *= Time.delta.time;
// Move object
transform.Translate(dir*speed);
}
}
accelerationEventCount 在最后一帧中发生的加速度测量次数。
accelerationEvent 返回最后一帧发生的加速度测量列表(只读)(分配临时变量)
anykey 当前是否有键或鼠标被按住?(只读)
anyKeyDown 在用户点击任何键或鼠标按钮时返回True。(只读)
backButtonLeavesApp 应该退出程序吗? 只能在Android Windows Phone 或Windows平板上使用。
compass 用于访问罗盘的compass 属性 (仅适用于手持设备)。(只读)
compensateSensors 此属性控制输入传感器是否应补偿屏幕方向。
compositionCursorPos IMES用于打开窗口的当前文本输入位置。
compositionString 由用户输入的当前IME组合字符串。
deviceOrientation 设备物理定向如操作系统报告(只读)
gyro 返回默认陀螺仪
imeCompositionMode 控制IME输入组合的启用和禁用。
imelsSelected 用户是否选择了IME 键盘输入源?
inputString 返回输入到该帧的键盘输入。
location 访问设备的位置属性 (仅用于手持设备)(只读)
mousePosition 当前鼠标位置在像素坐标。(只读)
mousePresent 表示检测到鼠标设备
mouseScrollDelta 鼠标当前滚动的增量(只读
multiTouchEnabled 属性指示系统是否处理多个触摸。
simulateMouseWithTouches 禁用带有触摸的鼠标模拟,默认情况下,启用此选项。
stylusTouchSupported当触摸笔由设备或平台支持时,返回true。
touchCount 触摸次数。保证不改变整个框架(只读)。
touches 触摸返回对象列表,表示最后一帧中所有触摸的状态。(只读)(分配临时变量)。
touchPressureSupported 如果支持触控的话,bool值由用户检查。
touchSupported 返回当前的应用程序运行的设备是否支持touch input。
静态方法
GetAccelerationEvent 返回上一帧发生的特定的加速度测量值。(不分配临时变量)。
GetAxis 返回由axisName标识的虚拟轴的值。
GetAxisRaw 返回由axisName标识的虚拟轴的值。不应用平滑滤坡。
GetButton 当按下按钮名称标识的虚拟按钮时,返回true。
GetButtonDown 在框架中,getbuttondown返回true,用户按下由buttonName标识的虚拟按钮。
GetButtonUp 在用户释放ButtonName标识的虚拟按键的第一帧时,GetButtonUp返回true.
GetJoystickNames 返回描述连接的操纵杆的字符串数组。
GetKey 当用户按住由名称标识的键时 ,返回true。
GetKeyDown 用户按下名称标识的键,在帧中返回true。
GetKeyUp 在用户释放按名称标识的密匙返回true。
GetMouseButton 返回是否按住给定的鼠标按钮。
GetMouseButtonDown 在用户按下给定的鼠标按钮时,返回true。
GetMouseButtonUp 在用户释放给定的鼠标按钮的帧中,返回true。
GetTouch 返回特定的触摸状态的对象。(不分配临时变量)。
IsJoystickPreconfigured 确定某个特定的操纵杆是否已由Unity预先配置。(只有Linux)
RestInputAxes 重置所有输入, 对于一帧,在ResetInputAxes之后,所有轴返回到0,所有按钮返回到0。