Игровое поле
Урок 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, а не число.
Задание
ЛегкоЗаставь голову перемещаться на одну клетку за каждый тик.
- В
Snakeдобавьprivate float timer; - В
Update()прибавляйTime.deltaTimeк timer; когдаtimer >= tick, вычитай из него tick и вызывайStep(). - В
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