Menu
CoddyTech

Оси

Часть раздела Основы скриптинга в 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, описанный в разделе «Управление с помощью клавиш», применяется и к осям.)

challenge icon

Задание

Легко

Ровер должен отзывчиво управляться, без плавного ускорения и замедления: стрелки (или WASD) перемещают его со скоростью speed единиц в секунду: влево и вправо по оси x, вверх и вниз по оси z. Он движется на полной скорости с момента нажатия клавиши и останавливается в момент её отпускания.

Нажми Play, щёлкни по игровому окну и управляй ровером, затем нажми Check.

Попробуйте сами

using UnityEngine;

public class Rover : MonoBehaviour
{
    public float speed = 4f;

    void Update()
    {
        // Horizontal управляет движением по оси x, Vertical — по оси z, без плавного ускорения и замедления.
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы скриптинга в Unity