Unity-用户输入交互详解

Unity-用户输入交互详解

1.简介

输入操作是游戏的基础操作之一。

Unity支持的操作方式:

  • 鼠标、键盘,小键盘(PC)
  • 手柄(主机)
  • 触屏操作、重力传感器、手势(移动平台)
  • VR,AR
  • 麦克风,摄像头

2. 虚拟输入轴(Virtual axes)

虚拟控制轴将不同的输入设备(比如键盘或摇杆的按键)都归纳到一个统一的虚拟控制系统中。
(比如键盘的w、S键以及手柄摇杆的上下运动默认都统一映射到竖直(Verica)输入轴上)
这样就屏蔽了不同设备之间的差异,让开发者可以用一套非常简单的输入逻辑,同时兼容多种输入设备。

使用 输入管理器(Input Manager) 可以查看、修改或增删虚拟轴。

现代的游戏中往往允许玩家在游戏中自定义按键,所以使用Unity的输入管理器就更为重要要了。
通过一层虚拟轴间接操作,可以避免在代码中直接写死操作按钮,而且还能通过动态修改虚拟轴的设置来改变键位的功能。

关于虚拟输入轴,还有一些需要知道的内容:

  1. 脚本可以直接通过虚拟轴的名称读取那个轴的输入状态。

  2. 创建Unity工程时,默认创建了以下虚拟轴:

    • 横向输入和纵向输入被映射在键盘的W、A、S、 D键以及方向键上

    • Fire1、 Fire2、 Fire3这三个按钮映射到了鼠标的左、中、右键以及键盘的Ctrl. AIt等键位上

    • 鼠标移动可以模拟摇杆输入(和鼠标光标在屏幕上的位置无关),且被映射在专门的鼠标偏移轴上

    • 其他常用虚拟轴,例如跳跃(Jump) 、确认(Submit) 和取消(Cancel)

## 2.1 添加和编辑虚拟输入轴

要添加新的虚拟输入轴,只需要单击主菜单的Edit > Projet Setings > Input 选项,单击路街检视窗口中会显示一个输入管理器,在里面就可以修改或添加虚拟轴了。

注意:
虚拟轴具有正、负两个方向。英文记作Positive和Negative.。
某些相反的动作可以只用一个轴来表示。
比如,如果摇杆向上为正,那么向下就是同一个轴的负方向。

每个虚拟轴可以映射两个按键,第二个按键作为备用,功能一样,备用的英文为Alterative。

2.2 虚拟输入轴属性表

下表是虚拟输入轴的属性表:

属性 功能
Name 轴的名字。在脚本中用这个名字来访问这个轴
Descriptive Name 描述性信息,在某些窗口中显示出来以方便查看(正方向)
Descriptive Negative Name 描述性信息,在某些窗口中显示出来以方便查看(负方向)
Ncgative Button 该轴的负方向,用于绑定某个按键
Positive Button 该轴的正方向,用于绑定某个按键
Alt Negative Button 该轴的负方向,用于绑定某个备用按键
Alt Positive Button 该轴的正方向,用于绑定某个备用按键
Gravity 轴回中的力度
Dead 轴的死区
Sensitivity 敏感度
Snap 保持式按键。比如按住下方向键,则一直保持下的状态,直到再次按上方向键
Invert 如果勾选,则交换正负方向
Type 控制该虚拟轴的类型, 比如手柄、键盘是两种不同的类型
Axis 很多手柄的输入不是按钮式的,这时就不能配置到Button里面,而是要配置到这里。可以理解为实际的操作轴
Joy Num 当有多个控制器时,要填写控制器的编号

上表中的Gravity、Dead 等属性需要解释一下。

2.2.1 Gravity

现代游戏的方向输入和早期游戏的方向输入不太一样。
早期游戏中,上、中、下都是离散的状态,可以直接用1、0、-1来表示。
而现代游戏输入往往具有中间状态,比如0、0.35、 0.5、0.7、1, 是带有多级梯度的。
比如轻推摇杆代表走路,推到底就是跑步。
所以现代游戏的输入默认都是采用多梯度的模式。

虽然键盘没有多级输入的功能,但Unity依然会模拟这个功能,也就是说当你按住W键时,这个轴的值会以很快的速度逐渐从0增加到1。

所以,上表中Gravity和Sensitivity的含义就不难理解了,它们影响着虚拟轴从1到0、从0到1的速度以及敏感度。

你可能感兴趣的:(Unity基础,unity,unity3d)