Menu
CoddyTech

Управляй

Урок 2 из 14 курса Игра на Unity: 3D-змейка на Coddy.

Змея поворачивает с помощью клавиш со стрелками или WASD. Камера смотрит на игровое поле с переднего края, поэтому движение вверх по экрану направлено вдоль +z, Vector3.forward, а вниз — это Vector3.back. Vector3.up направлен в небо: голова, перемещённая в этом направлении, поднялась бы над игровым полем.

Поворот происходит один раз при нажатии, поэтому считывай клавиши с помощью wasPressedThisFrame из Input System. Нажатие лишь меняет direction. Step() по-прежнему перемещает голову на следующем такте, поэтому змея сохраняет свой ритм. Ровер, который направляется вправо по экрану при нажатии D:

Keyboard keyboard = Keyboard.current;
if (keyboard != null && keyboard.dKey.wasPressedThisFrame)
{
    heading = Vector3.right;
}

В Input System у клавиатуры нет осей: стрелка и соответствующая ей буква — это две клавиши, соединённые с помощью ||. На устройстве без клавиатуры Keyboard.current имеет значение null, поэтому считай его один раз в начале и проверь.

challenge icon

Задание

Легко
  1. Добавь using UnityEngine.InputSystem; в Snake.
  2. В начале Update() считай Keyboard.current. Нажатие клавиши со стрелкой вверх или W задаёт для direction значение Vector3.forward; стрелка вниз или S — Vector3.back; стрелка влево или A — Vector3.left; стрелка вправо или D — Vector3.right.
  3. Оставь Step() без изменений: голова повернёт на следующем тике.

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

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

using UnityEngine;

public class Snake : MonoBehaviour
{
    public float tick = 0.15f;   // секунды между двумя шагами
    private float timer;
    private Vector3 direction = Vector3.right;

    void Update()
    {
        timer += Time.deltaTime;
        if (timer >= tick)
        {
            timer -= tick;
            Step();
        }
    }

    void Step()
    {
        transform.position += direction;
    }
}
quiz iconПроверьте себя

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

Все уроки раздела Игра на Unity: 3D-змейка