Conventional Game Input
Unity supports keyboard, joystick and gamepad input.
Virtual axes and buttons can be created in the Input Manager, and end users can configure Keyboard input in a nice screen configuration dialog.
Unity 支持 键盘 摇杆 手柄。
虚拟轴和按键可以在Input Manager中创建,最终用户可以在配置框中配置键盘输入。
You can setup joysticks, gamepads, keyboard, and mouse, then access them all through one simple scripting interface.
From scripts, all virtual axes are accessed by their name.
Every project has the following default input axes when it’s created:
- Horizontal and Vertical are mapped to w, a, s, d and the arrow keys.
- Fire1, Fire2, Fire3 are mapped to Control, Option (Alt), and Command, respectively.
- Mouse X and Mouse Y are mapped to the delta of mouse movement.
- Window Shake X and Window Shake Y is mapped to the movement of the window.
Adding new Input Axes
If you want to add new virtual axes go to the
menu. Here you can also change the settings of each axis.如果你想添加新的虚拟轴,请到Edit->Project Settings->Input菜单,在这里你也可以改变每个轴的设定。
You map each axis to two buttons on a joystick, mouse, or keyboard keys.
你可以映射一个轴到输入设备的两个按键。
Property: | Function: |
---|---|
Name | The name of the string used to check this axis from a script.脚本中使用轴的名字 |
Descriptive Name | Positive value name displayed in the input tab of the | dialog for standalone builds.配置窗口中正值的显示名字
Descriptive Negative Name | Negative value name displayed in the Input tab of the 配置窗口中负值的显示名字 | dialog for standalone builds.
Negative Button | The button used to push the axis in the negative direction.负值按钮 |
Positive Button | The button used to push the axis in the positive direction.正值按钮 |
Alt Negative Button | Alternative button used to push the axis in the negative direction.可替代负值按钮 |
Alt Positive Button | Alternative button used to push the axis in the positive direction.可替代正值按钮 |
Gravity | Speed in units per second that the axis falls toward neutral when no buttons are pressed.不按键时轴回到中间值的速度 |
Dead | Size of the analog dead zone. All analog device values within this range result map to neutral.死区大小,在死区内视作中值 |
Sensitivity | Speed in units per second that the the axis will move toward the target value. This is for digital devices only.轴达到目标值的速度,只对数字设备有效 |
Snap | If enabled, the axis value will reset to zero when pressing a button of the opposite direction.如果有效,按相反方向键轴设为0 |
Invert | If enabled, the Negative Buttons provide a positive value, and vice-versa.如果有效,正负值按键交换 |
Type | The type of inputs that will control this axis.控制轴的设备类型 |
Axis | The axis of a connected device that will control this axis.控制这个虚拟轴的设备轴(不知道翻译对不) |
Joy Num | The connected Joystick that will control this axis.控制这个虚拟轴的摇杆号 |
Use these settings to fine tune the look and feel of input. They are all documented with tooltips in the Editor as well.Editor工具有提示
Using Input Axes from Scripts
You can query the current state from a script like this:在脚本里这样询问当前状态
value = Input.GetAxis ("Horizontal");
An axis has a value between –1 and 1. The neutral position is 0. This is the case for joystick input and keyboard input.
轴的值在[-1,1],中间值为0,这是摇杆和键盘的输入情况。
However, Mouse Delta and Window Shake Delta are how much the mouse or window moved during the last frame. This means it can be larger than 1 or smaller than –1 when the user moves the mouse quickly.
但是,鼠标和窗口移动量是指他们在最后一帧中的变化量,这意味着用户快速移动鼠标时它可以大于1或小于-1,
It is possible to create multiple axes with the same name. When getting the input axis, the axis with the largest absolute value will be returned. This makes it possible to assign more than one input device to one axis name. For example, create one axis for keyboard input and one axis for joystick input with the same name. If the user is using the joystick, input will come from the joystick, otherwise input will come from the keyboard. This way you don’t have to consider where the input comes from when writing scripts.
可以用相同的名字创建多个轴。当获取输入值时,轴返回绝对值最大的量。这就可以将多个输入设备赋给同一轴名。比如建立一个键盘的轴,摇杆输入的相同名字的轴,如果用户摇杆输入源来自摇杆,用户用键盘输入源来自键盘,这样在脚本里就不用关心输入设备是哪种了。
Button Names
To map a key to an axis, you have to enter the key’s name in the Positive Button or Negative Button property in the Inspector.
The names of keys follow this convention:命名习俗
- Normal keys: “a”, “b”, “c” …
- Number keys: “1”, “2”, “3”, …
- Arrow keys: “up”, “down”, “left”, “right”
- Keypad keys: “[1]”, “[2]”, “[3]”, “[+]”, “[equals]”
- Modifier keys: “right shift”, “left shift”, “right ctrl”, “left ctrl”, “right alt”, “left alt”, “right cmd”, “left cmd”
- Mouse Buttons: “mouse 0”, “mouse 1”, “mouse 2”, …
- Joystick Buttons (from any joystick): “joystick button 0”, “joystick button 1”, “joystick button 2”, …
- Joystick Buttons (from a specific joystick): “joystick 1 button 0”, “joystick 1 button 1”, “joystick 2 button 0”, …
- Special keys: “backspace”, “tab”, “return”, “escape”, “space”, “delete”, “enter”, “insert”, “home”, “end”, “page up”, “page down”
- Function keys: “f1”, “f2”, “f3”, …
The names used to identify the keys are the same in the scripting interface and the Inspector.
value = Input.GetKey ("a");