unity3d学习笔记1——输入控制Input

在基本认识了unity相关东西后,深入了解下它的输入是非常有必要的,包括鼠标,键盘,移动设备触摸等交互。

unity3d中输入由一个InputManager管理,在编辑器中有一个InputManager的设置界面提供了一些常规的设置



unity3d学习笔记1——输入控制Input_第1张图片

Axes包含了15个控制轴,每个控制轴都可以用来控制游戏的一个输入

拿其中的一个轴进行举例


看下这个名为Horizontal的控制轴

unity3d学习笔记1——输入控制Input_第2张图片

里面有轴的名字:Name

正向输入控制按钮描述:Descriptive Name

负向输入控制制按钮描述:Descriptive Negative Name

负向输入控制按钮:Negative Button

正向输入控制按钮:Positive Button

第二个负向输入控制按钮:Alt Negative Button

第二个正向输入控制按钮:Alt Positive Button

重置为0的参数系数:Gravity(值越大,重置为0的时间越短)

判定为无输入的上限值:Dead(其意思就是绝对值小于这个值,就判定为0)

输出从0到最大的参数系数:Sensitivity (与Gravity是相反的操作,就是从0到输入最大值的时间系数,该值越大,那么时间越短)

Snap 官方描述是当正按钮按下时,如果某个时间负按钮按下,输入会立即为0,但是本人测试无效,不知道什么原因

Invert 是正负控制反向

Type 是输入控制类型

Axis 输入设备类型

Joy Num,哪个输入轴生效,默认所有输入轴生效



上面都是unity编辑器中InputManager 中的控制,下面是实际编码代码中怎么运用:


在编码时,我们需要知道这个类,Input

这是获取输入的接口类

这个类有很多静态方法和静态属性

我们先看下静态属性

acceleration 上一次测量的设备的三维加速向量
accelerationEventCount 上一进行加速度测量次数
accelerationEvents 返回上一帧加速测量的所有AccelerationEvent列表
anyKey 当前是否有鼠标或按钮按着(只读)
anyKeyDown 当前是否有鼠标或按钮按下(是一个动作,不是一个按下的状态)
compass 获取定位装置 
compensateSensors 输入传感器是否会控制屏幕方向
compositionCursorPos 输入法界面显示坐标
compositionString 当前输入法中玩家的输入字符
deviceOrientation OS设备的物理方向枚举值,详见DeviceOrientation
gyro 获取设备陀螺仪,详见Gyroscope
imeCompositionMode 输入法控制模式枚举值,详见IMECompositionMode
imeIsSelected 用户是否有一个有效的输入法
inputString 返回当前用户在这一帧内输入的字符串,是一个字符串,不是一个字符。
location 获取设备位置(手持设备专用)(只读)
mousePosition 返回鼠标的位置,(Y坐标和flash 中不一样)
multiTouchEnabled 是否处理多点触控
simulateMouseWithTouches 鼠标模拟触控是否开启
touchCount 触点个数(一帧之内不会改变)
touches 返回上一帧,所有触控列表。
下面是所有的静态方法


GetAccelerationEvent 获取上一帧的加速事件(GetAccelerationEvent);
GetAxis 根据编辑器InputManager 中设定的控制轴的名字来获取该控制轴的输入值
GetAxisRaw 同上,只不过是没有经过平滑处理的值。
GetButton 获取按钮是否被按住(例如控制轴Fire1, 这里的按钮名字,其实是InputManager界面中Axes虚拟轴的名字)
GetButtonDown 获取按钮是否被按下(例如控制轴Fire1)
GetButtonUp 获取按钮是否被放开(例如控制轴Fire1)
GetJoystickNames 获取当前连接的控制杆的名字列表。
GetKey 获取键盘某个键是否被按住
GetKeyDown 获取键盘某个键是否被按下
GetKeyUp 获取键盘某个键是否被放开
GetMouseButton 获取鼠标按键是否被按住(这里的鼠标按键名只有(0,1,2))
GetMouseButtonDown 获取鼠标按键是否被按下
GetMouseButtonUp 获取鼠标按键是否被按下
GetTouch 返回当前触点状态(索引从0开始)可以根据Input.touchCount来获取当前触点最大索引
ResetInputAxes 将一帧内,该代码执行后,所有的输入值都将为0





你可能感兴趣的:(unity3d,学习笔记)