Оси
Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 20 из 85.
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 из урока «Управление с помощью клавиш» также применяется к осям.)
Задание
ЛегкоСделай так, чтобы ровер двигался чётко, без плавного ускорения и замедления.
- В
Update()считай значенияfloat h = Input.GetAxisRaw("Horizontal");иfloat v = Input.GetAxisRaw("Vertical");. - Прибавь
new Vector3(h * speed * Time.deltaTime, 0, v * speed * Time.deltaTime)кtransform.position.
Нажми «Играть», щёлкни по игровому окну и управляй с помощью стрелок или WASD: ровер сразу начинает и прекращает движение. Затем нажми «Проверить».
Попробуйте сами
using UnityEngine;
public class Rover : MonoBehaviour
{
public float speed = 4f;
void Update()
{
// Horizontal управляет движением по оси x, Vertical — по оси z, без сглаживания.
}
}
Все уроки раздела Основы скриптинга в Unity
1Основы C# в Unity
Привет, UnityПеременныеДля дробных чисел нужна fТекст в консолиПеременные, которые запоминаютЕсли и иначеСравнение чиселПовторение: сборщик монет7Циклы и методы
Повторение с forЦиклы внутри цикловНапишите методМетоды, которые возвращают значениеМассивыПовторение: лестница10Поиск объектов
Поиск по имениТегиПоиск по типуСсылки лучше поискаNull в UnityПовторение: ближайшая монета13Проект: уворачиваемся от блоков
БегунБлоки с неба2Заставь двигаться
Размести кубДвигай каждый кадрПоворачивай каждую секундуУправляй клавишамиПовторение: веди куб5Векторы
Сложение векторовНаправленияЛокальное и мировое пространствоСкорость по диагоналиРасстояние между объектамиVector3 — это структураПовторение: пилот дрона8Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказ и скрытиеПовторение: выключатель светаПотренируйтесь самостоятельно: Песочница Unity