Unity输入控制

来源:互联网 发布:淘宝客服招聘网 编辑:程序博客网 时间:2024/05/21 22:22

Unity 中,使用 Input 类获取用户输入,记录下常用的函数及注意事项。

键盘输入:

Input.GetKeyDown(KeyCode key) 获取指定按键被按下的事件,直到松开按键再次按下,才能获取第二次输入。其中参数 key 与物理按键对应,例如KeyCode.A 代表键盘上的 ‘A’ 键,KeyCode 与 物理按键的映射是无法改变的。

      Input.GetKeyUp(KeyCode key) 与 Input.GetKeyDown(KeyCode key) 同理,是在按键松开的时候获得输入。

      Input.GetKey(KeyCode key)  在 key 被持续按住时,调用此方法。


鼠标输入:

Input.GetMouseButtonDown(int button)

Input.GetMouseButtonUp(int button)

       Input.GetMouseButton(int button)

鼠标输入与键盘输入类似,参数 0 代表鼠标左键、参数 1 代表鼠标右键、参数 2 代表鼠标中键。

      

自定义输入:

      Unity 允许创建自定义的虚拟轴,虚拟按键是虚拟轴的特殊情况,在InputManager 中统一视为虚拟轴。 选择菜单栏中的 Edit->Project Settings->Input  可以打开InputManager,如图:

      

        

Unity 默认创建了18个虚拟轴,每个轴的属性如图:

      


Name 是虚拟轴的名称,通过 Name 在脚本中访问虚拟轴,可以为不同的设备指定同名的虚拟轴,输入来自于用户正在使用的那个设备,在写脚本时,无需考虑输入来自于哪里。

Negative Button        轴的负按键对应的物理按键。

Positive Button          轴的正按键对应的物理按键。

Alt Negative Button   备选负按键。

Alt Positive Button     备选正按键。

Gravity         当键松开后,轴复位的速度。 越大表示越快复位。

Dead                          死亡区间,在此区间的值都会被认为是复位值,即0。 个人理解是绝对值在此区间。

Sensitivity                  灵敏度,对按键来说是响应速度,与 Gravity 相对,对鼠标来说是单位时间内移动距离的影响

Snap                          选中后,当按下反方向键后,值立刻复位;如果不选中,原方向值不会立刻归0,会有一个减速到0的过程。

Invert                         选中后,正负按键颠倒。

Axis                           这个虚拟轴所映射的设备输入轴(摇杆、鼠标、手柄等)。

 在脚本中通过以下方法获取虚拟按键输入:

Input.GetButtonUp(string buttonName)

        Input.GetButtonDown(string buttonName)

Input.GetButton(string buttonName)


获取轴输入:

Input.GetAxis(string axisName)    输入轴的值一般在 -1 到 1之间,鼠标输入表示的是移动距离,所以会大于这个范围。使用虚拟轴的好处是,游戏发布后,用户可以自定义键位设置。

Note: 官方文档明确说明,GetXXXUp、GetXXXDown 这类输入一定要放在 Update() 中,而不是 FixedUpdate() 中, 原因是在每一帧会将输入重置,意思就是说在 Update() 中一定能检测到输入,并将输入重置。因此如果把此类 Input 方法放在 FixedUpdate() 中,有可能造成漏掉输入的情况,同时也有可能造成一次输入检测出多次。 而 GetKey()、GetButton()、GetMouseButton()、GetAxis() 则没有明确说明,由于是连续检测,应该也可以放在 FixedUpdate() 。


0 0
原创粉丝点击