Объявление
public static float GetAxis(string axisName);Описание
Возвращает значение виртуальной оси, определенной axisName
.
Значение будет находиться в диапазоне -1...1 для устройств ввода с клавиатуры и джойстика.
Значение этого значения зависит от типа элемента управления вводом, например, для горизонтальной оси джойстика значение 1 означает, что джойстик нажат до упора вправо, а значение -1 означает, что он до упора левый; значение 0 означает, что джойстик находится в нейтральном положении.
Если ось сопоставлена с мышью, значение будет другим и не будет находиться в диапазоне -1...1. Вместо этого это будет текущая дельта мыши, умноженная на чувствительность оси. Обычно положительное значение означает, что мышь движется вправо/вниз, а отрицательное значение означает, что мышь движется влево/вверх.
Это не зависит от частоты кадров; вам не нужно беспокоиться о различной частоте кадров при использовании этого значения.
Чтобы настроить ввод или просмотреть параметры для axisName
, перейдите в раздел Редактировать > Настройки проекта > Менеджер ввода. Это вызывает диспетчер ввода. Разверните Axis, чтобы увидеть список ваших текущих входных данных. Вы можете использовать один из них как 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 до +1 или -1 с увеличением/уменьшением с шагом 0,05f. GetAxisRaw немедленно изменяет значение с 0 на 1 или -1, поэтому без каких-либо действий.