返回由 axisName
标识的虚拟轴的值。
注意:此 API 是传统 Input
类的一部分,不推荐在新的项目中使用。此处的文档是为了支持使用旧的 Input Manager 和 Input 类的传统项目。对于新的项目,您应该使用更新的 Input System Package。 (了解更多).
对于键盘和操纵杆输入设备,该值将在 -1...1 范围内。
此值的含义取决于输入控件的类型,例如,对于操纵杆的水平轴,值为 1 表示操纵杆被推到最右边,值为 -1 表示它被推到最左边;值为 0 表示操纵杆处于其中立位置。
如果轴映射到鼠标,则该值将不同,并且不会在 -1...1 的范围内。相反,它将是当前鼠标增量乘以轴灵敏度。通常,正值表示鼠标向右/向下移动,负值表示鼠标向左/向上移动。
这是与帧率无关的;在使用此值时,您无需担心帧率的变化。
要设置您的输入或查看 axisName
的选项,请转到 **编辑** > **项目设置** > **输入管理器**。这将打开输入管理器。展开 **轴** 以查看您当前输入的列表。您可以使用其中一个作为 axisName
。要重命名输入或更改正按钮等,请展开其中一个选项,并在 **名称** 字段或 **正按钮** 字段中更改名称。此外,将 **类型** 更改为 **操纵杆轴**。要添加新输入,请将 **大小** 字段中的数字加 1。
using UnityEngine; using System.Collections;
// A very simplistic car driving on the x-z plane.
public class ExampleClass : MonoBehaviour { public float speed = 10.0f; public float rotationSpeed = 100.0f;
void Update() { // Get the horizontal and vertical axis. // By default they are mapped to the arrow keys. // The value is in the range -1 to 1 float translation = Input.GetAxis("Vertical") * speed; float rotation = Input.GetAxis("Horizontal") * rotationSpeed;
// Make it move 10 meters per second instead of 10 meters per frame... translation *= Time.deltaTime; rotation *= Time.deltaTime;
// Move translation along the object's z-axis transform.Translate(0, 0, translation);
// Rotate around our y-axis transform.Rotate(0, rotation, 0); } }
using UnityEngine; using System.Collections;
// Performs a mouse look.
public class ExampleClass : MonoBehaviour { float horizontalSpeed = 2.0f; float verticalSpeed = 2.0f;
void Update() { // Get the mouse delta. This is not in the range -1...1 float h = horizontalSpeed * Input.GetAxis("Mouse X"); float v = verticalSpeed * Input.GetAxis("Mouse Y");
transform.Rotate(v, h, 0); } }
注意: 水平和垂直范围随着 0.05f 步长的增加/减少而从 0 变为 +1 或 -1。 GetAxisRaw 的变化从 0 立即变为 1 或 -1,因此没有步骤。