Input.GetKey(KeyCode.Joystick1Button0)
/*
说明:
a.这个函数返回bool值,GetKey相当于"isKeyPress",
GetKeyDown相当于"isKeyDown",GetKeyUp相当于"isKeyRelease"
b.JoystickXButtonY,
其中X可以取值为无或数字1~8,取数字时对应的是1~8号手柄,不取值的时候代表任意手柄;
Y可以取值数字0~19,对应手柄上的20个开关键.
所以理论上Unity3D最多同时支持8个手柄,最多支持手柄上带有20个开关键.
*/
B.使用输入管理器
使用Edit->Project Setting->Input:
先在Input面板中设定好Name和绑定的键位,然后写代码:
Input.GetAxis("A");
/*
说明:
a.这个函数返回的是float值,可以通过设定选择该值是否带有延迟,如果不设定,就默认是按下返回1,不按返回0.
b.这个函数的效果相当于"isKeyPress"
*/
5 对于手柄上的”轴”键(就是线性开关,推动的力度不同效果不同,例如左右摇杆,扳机键),只能通过输入管理来处理:
使用Edit->Project Setting->Input:
先在Input面板中设定好Name和绑定的键位,然后写代码:
Input.GetAxis("Horizontal_L")
/*
说明:
a.这个函数返回的是float值,绑定到轴键上的时候,该函数的值会始终维持与轴的状态相同.
b.这个函数的效果相当于"isKeyPress"
c.轴键是两个方向一对的,例如水平方向是这样:最左边是-1,回中是0,最右边是+1.
d.两个扳机键是一个轴,所以不用单独绑定两个扳机键,而是作为一个轴绑定.
*/
6 使用键盘
如果只使用键盘输入,可以在代码中直接检测按键,像这样:
Input.GetKeyDown(KeyCode.A)
当然也可以把键位绑定在输入管理里面然后用Input.GetAxis获取
7. 多种输入
有的时候我们需要多种输入方式,例如很多用手柄玩的游戏如果不插手柄,会有一套键盘鼠标的操作方法,这是怎么实现的呢?
方法1:
输入管理器中的通道是可以重名的,我们可以建两个同名的通道,在里面设置不同的键位,在代码里面检测这个通道是否有操作的时候,无论那个通道有操作,代码中都会有相同的反应.
方法2:
使用输入管理器中的Alt Negative Button和Alt Positive Button属性,这两个属性就是第二按键的意思,也就是说一个通道就能设置两种按键方式.
注意:方法1适用于线性按键,因为键盘鼠标都是瞬发开关键,用开关键模拟线性键需要设置延迟时间(例如W键按2秒以内是走,超过两秒是跑),而手柄摇杆本身就是线性键,不需要设置延迟,两套设置,必须占用两个通道;方法2适用于开关键,因为手柄上的开关键和键盘上的按键并没有什么区别,可以采用相同的延迟等设置.
8.Input Manager属性解释:
属性 | 作用 |
---|---|
Name: | [按键名]该键的名称,可以在脚本编程中直接引用他。比如:Input.GetButtonDown(“Jump”); |
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: | [手柄编号]可以指定某个特定的手柄或者任意手柄 |
9.可以填入button属性的值:
类型 | 填入button属性时的写法 |
---|---|
标准键 | “a”, “b”, “c” … |
数字键 | “1”, “2”, “3”, … |
方向键 | “up”, “down”, “left”, “right” |
小键盘键 | “[1]”, “[2]”, “[3]”, “[+]”, “[equals]” |
修改键 | “right shift”, “left shift”, “right ctrl”, “left ctrl”, “right alt”, “left alt”, “right cmd”, “left cmd” |
鼠标按钮 | “mouse 0”, “mouse 1”, “mouse 2”, … |
手柄按钮(从任意手柄) | “joystick button 0”, “joystick button 1”, “joystick button 2”, … |
手柄按钮(从指定手柄) | “joystick 1 button 0”,”joystick 1 button 1”,”joystick 2 button 0”,”joystick 2 button 1” … |
特殊键 | “backspace”, “tab”, “return”, “escape”, “space”, “delete”, “enter”, “insert”, “home”, “end”, “page up”, “page down” |
功能键 | “f1”, “f2”, “f3”, … |