Menu
CoddyTech

Игровое поле

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

В этом курсе ты создашь 3D-версию «Змейки»: змейку из кубов на поле размером 15 на 15, вид сверху. Она перемещается на одну клетку за раз, поворачивает с помощью стрелок или WASD, ест, растёт и погибает, если врезается в стены или собственный хвост. Snake управляет головой; GameManager остаётся пустым, пока не появится еда. Кнопка «Играть» запускает игру; кнопка «Проверить» проверяет её.

Ширина каждой клетки — одна единица; координаты — целые числа от -7 до 7. Змейка никогда не скользит: она перемещается на целую клетку за один такт — фиксированный интервал времени — и стоит на месте между тактами. Такт задаёт таймер: каждый кадр прибавляй Time.deltaTime, а когда значение достигнет длительности такта, выполняй действие и вычитай длительность такта:

timer += Time.deltaTime;
if (timer >= 0.5f)
{
    timer -= 0.5f;
    Step();
}

Вычитание длительности такта вместо установки таймера в 0 сохраняет часть кадра, которая превысила длительность такта, поэтому такты не будут постепенно смещаться. Используй поле tick, а не число.

challenge icon

Задание

Легко

Заставь голову перемещаться на одну клетку за каждый тик.

  1. В Snake добавь private float timer;
  2. В Update() прибавляй Time.deltaTime к timer; когда timer >= tick, вычитай из него tick и вызывай Step().
  3. В Step() прибавляй direction к transform.position.

Нажми «Играть»: голова движется вправо по клеткам и пока что уходит за пределы поля. Затем нажми «Проверить».

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

using UnityEngine;

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

    void Update()
    {
        // Каждые tick секунд выполняй один Step()
    }

    void Step()
    {
        // Перемести голову на одну клетку в направлении direction
    }
}

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

Потренируйтесь самостоятельно: Песочница Unity