Оси
Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 13 из 67.
Input.GetAxis("Horizontal") преобразует стрелки влево и вправо (а также A и D) в одно число от -1 до 1: -1 для движения влево, 1 для движения вправо, 0 — если ни одна клавиша не нажата. Input.GetAxis("Vertical") делает то же самое для стрелок вниз и вверх (S и W). Один вызов заменяет два if, а стик геймпада управляет теми же осями без дополнительного кода.
Число не меняется скачком. При настройках Unity по умолчанию оно движется к целевому значению со скоростью 3 в секунду, поэтому после нажатия требуется треть секунды, чтобы достичь 1, и ещё треть секунды, чтобы вернуться к 0 после отпускания клавиши. Благодаря такому плавному изменению скорости ховеркрафт мягко разгоняется и постепенно останавливается:
public float speed = 5f;
void Update()
{
float h = Input.GetAxis("Horizontal");
transform.position += new Vector3(h * speed * Time.deltaTime, 0, 0);
}Input.GetAxisRaw("Horizontal") пропускает плавное изменение: на каждом кадре значение равно ровно -1, 0 или 1, поэтому движение начинается и останавливается сразу. Используй GetAxis для того, что должно ощущаться тяжёлым, и GetAxisRaw для чёткого управления. Если удерживать обе стрелки, любой из этих методов возвращает 0, потому что два направления взаимно компенсируются. (В проекте Unity 6 параметр Active Input Handling, описанный в разделе «Управление с помощью клавиш», применяется и к осям.)
Задание
ЛегкоРовер должен отзывчиво управляться, без плавного ускорения и замедления: стрелки (или WASD) перемещают его со скоростью speed единиц в секунду: влево и вправо по оси x, вверх и вниз по оси z. Он движется на полной скорости с момента нажатия клавиши и останавливается в момент её отпускания.
Нажми Play, щёлкни по игровому окну и управляй ровером, затем нажми Check.
Попробуйте сами
using UnityEngine;
public class Rover : MonoBehaviour
{
public float speed = 4f;
void Update()
{
// Horizontal управляет движением по оси x, Vertical — по оси z, без плавного ускорения и замедления.
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы скриптинга в Unity
1Ваш первый скрипт
Привет, UnityРазместите кубДвигайте каждый кадрПоворачивайте каждую секундуУправляйте клавишамиПовторение: управляйте кубом2Инспектор
Поля инспектораSerializeFieldЧисла с плавающей точкой и MathfАтрибуты инспектораПовторение: лифт5Преобразования и иерархия
Родители и детиМасштабПосмотри на объектыДвигайся к точкеПовторение: Луна на орбите6Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказать и скрытьПовторение: выключатель света