unity小白的学习笔记-InputManager

今天尝试做个小Demo,玩过一些PC端游戏的朋友应该知道很多游戏都可以自定义按键,就像这样:

通过传统方法获得按键信息时,我是这样做的

 

 

 那问题来了,如果策划或者玩家不想通过按W实现向前移动呢?或则说玩家想按Q向前移动,改代码当然可以实现玩家需求,但这绝不是最理想的,好在unity给我们提供了一个功能强大的InputManager。

通过Edit->Project Settings->Input即可打开InputManager面板,如下

 

 我们看到,InputManager面板类似数组,unity已经预先帮我们定义了18个数组元素,选择打开一个元素我们可以看到很多属性

 

 name属性就是元素名,这里我们从字面理解应该是控制水平移动,每个元素都伴有4个按键,分成两组如图right和d键都是控制向右移动,left和a都是控制向左移动,上面的两个Descriptive分别是对Negative button和Positive botton的描述,将来会显示在游戏的设置面板中,参考守望先锋的互动、技能1、技能2……再下面的Sensitivity是灵敏度,差不多就是按下按键时有一段平滑过渡时间,相应的,Gravity就是松开按键。中间的Dead是为了防止误触的,一般用于摇杆,不做详细介绍。而Snap如果启用它,当按下反向按键时值会直接变成0,Invert就是翻转,把正向按键变成负向按键,负向按键变成正向按键。再下面的Type是类型,有三种:Key or Mouse Button、Mouse Movement、Joystick Axis。Key or Mouse Button是控制按键类型的输入,Mouse Movement是控制鼠标移动的输入,Joystick Axis是控制摇杆的。Axis是设备的输入轴,这里是X轴,毕竟左右移动是沿自身X轴移动,这里总共有28中选择,前3种分别是X axis代表X轴、Y axis代表Y轴、3rd axis代表滚轮,后面的都是摇杆的输入轴,不做讨论。最后一个Joy Num也是摇杆的属性,不做讨论。

当然按键种类远不止这18中,我们可以通过改Axes的size属性来实现增加按键数量。那如果我们想设置3种按键来控制向右移动呢?unity中同时还支持不同元素可以有相同的名字,我们只需再设置一个名为Horizontal的元素即可。

既然有了这么多元素,那我们在代码中如何引用呢?

 

 

 总共有这5种,前三种是获得鼠标操作,0是右键的意思,返回一个布尔值,按下为true,后面两种很好理解,一个是按下按键时返回true,一个是松开按键时返回true,这两个是瞬时的知发生一帧,如果想做到fps游戏中按下持续开火的效果就使用GetMouseButton,按下时它会一直返回true

而GetAxis和GetAxisRaw都是根据axisName名称(比如说Horizontal注意要与InputManager面板一致)返回虚拟输入轴中的值,正向的返回+1负向返回-1否则为0,两者的区别是GetAxisRaw是不平滑过渡,就是按下按键直接从0变到+-1;而GetAxis有一个平滑过渡时间,我们实现人物移动时可以用它

posted @ 2020-04-24 12:50  暴走唐  阅读(1568)  评论(0编辑  收藏  举报