前言
Unity 提供了 Input 类作为获取用户输入的一个工具,它可以直接获取键鼠以及一些移动设备的输入信号,包括陀螺仪、加速度传感器之类的,当然触摸信号也是支持的。
还有一种方式是通过虚拟标识来获取信号,可以由开发者将虚拟标识映射到输入涉设备上。
注意:本文只记录关于键鼠信号的输入
Input
Input类提供了一些函数来获取按钮的状态:
GetAccelerationEvent | 返回上一帧期间进行的特定加速度测量。(不分配临时变量)。 |
---|---|
GetAxis | 返回由 axisName 标识的虚拟轴的值。 |
GetAxisRaw | 返回由 axisName 标识的虚拟轴的值(未应用平滑过滤)。 |
GetButton | 当按住 buttonName 标识的虚拟按钮时,返回 true。 |
GetButtonDown | 在用户按下由 buttonName 标识的虚拟按钮的帧期间返回 true。 |
GetButtonUp | 在用户释放由 buttonName 标识的虚拟按钮的第一帧返回 true。 |
GetJoystickNames | 获取与在输入管理器中配置的轴的索引对应的输入设备名称的列表。 |
GetKey | 在用户按下 name 标识的键时返回 true。 |
GetKeyDown | 在用户开始按下 name 标识的键的帧期间返回 true。 |
GetKeyUp | 在用户释放 name 标识的键的帧期间返回 true。 |
GetMouseButton | 返回是否按下了给定的鼠标按钮。 |
GetMouseButtonDown | 在用户按下给定鼠标按钮的帧期间返回 true。 |
GetMouseButtonUp | 在用户释放给定鼠标按钮的帧期间返回 true。 |
GetTouch | 调用 Input.GetTouch 以获取 Touch 结构。 |
IsJoystickPreconfigured | 确定 Unity 是否已预先配置某个特定的游戏杆模型。(仅限 Linux)。 |
ResetInputAxes | 重置所有输入。调用 ResetInputAxes 后,所有轴和所有按钮都恢复为 0,并且持续一帧时长。 |
除了通过表示获取虚拟轴或者虚拟按钮的函数,其他的函数都是通过实际按键类型来获取信号输入的。
获取按键信号
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { void Update() { if (Input.GetKey("up")) { print("up arrow key is held down"); } if (Input.GetKey("down")) { print("down arrow key is held down"); } } }
获取虚拟标识的信号
主要介绍两个函数的用法,其他函数的用法也是类似的。
public static float GetAxis (string axisName); public static bool GetButton (string buttonName);
使用时都是传入虚拟标识的名称,只是返回值有一些区别。GetButton()返回按钮是否被按下,GetAxis() 返回一个float值,范围是[-1.0,1.0],如果值为0,说明这个遥感或者是输入设备没有被触发。
使用起来和直接获取按键状态没有太大的区别,但是它有一个优势,一个虚拟标识可以映射到多个按键上,比如在控制角色移动这件事上。可以将上下左右分别映射到键盘上的上下左右按键,同时还可以映射到wasd上,很方便。
修改虚表标识的按键映射
不过目前有个很头疼的问题,我没有找到在代码里修改虚拟标识映射到按键上的方法,只能在编辑器里操作。
在Unity的菜单栏选择 Edit->Project setting->Input Manager
属性如下:
Name:【按键名】该键的名称,可以在脚本编程中直接引用他。
Descriptive Name:【描述名】在游戏的独立机构中的配置对话框中,当控制值为正时候所显示的名称。默认空白。
Negative Descriptive Name:【负描述】在游戏的独立机构中的配置对话框中,当控制值为负的时候所显示的名称。
Nagative Button:【负向按钮】玩家按下这个按钮来让被控制物体向负方向运动。
Positive Button:【正向按钮】玩家按下这个按钮让被控制物体向正方向运动。
Alt Negative Button: 玩家可以使用的备选负向按钮,比如方向键和WASD
Alt Positive Button:玩家可以使用的备选争相按钮。
Gravity:【重力】如果玩家停止输入,该轴将恢复到空挡或0速度,其单位为单位每秒。
Dead:【盲区】可以用在模拟控制。在模拟控制器上,在这个范围内的任何值都会映射到空档不会提供任何输入。
Sensitivity:【灵敏度】可以用于数字控制,他是该轴向给定得值移动的速度。正负都可,单位为单位每秒。
Snap:【对齐】如果选中,可以确保在同时按下正向和负向按钮时候该轴的值为空挡。
Invert:【反转】迅速交换正向和负向控制键。
Type:【类型】该键对应的输入设备类型。可以为Key,MouseButton,MouseMove,JoystickAxis,或Window Movement。
Axis:【轴】这个控制方式有该输入设备的哪条轴指挥。这可受不同游戏手柄影响。
JoyNum:【操作杆编号】多个操作杆在机器上市后,决定哪个哪个操作杆控制给定的轴。可以选择从所有的操作杆接受输入,或是为其制定一个特定的。
按照这个来修改就行了。
文章评论