Menu
CoddyTech

Еда

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

Еда находится на случайной клетке. Координаты клеток — целые числа, поэтому выбери x и z, используя версию Random.Range для int. Для целых чисел верхняя граница не включается: Random.Range(1, 7) имитирует бросок кубика и выдаёт числа от 1 до 6, но никогда не 7. Чтобы включить число, запроси число на единицу больше него.

С аргументами типа float Random.Range возвращает любое промежуточное число, например 3.62, которое не находится в центре клетки, поэтому змея никогда не встретит еду. Сундук на сетке 10 на 10 с клетками от 0 до 9:

int row = Random.Range(0, 10);      // от 0 до 9
int column = Random.Range(0, 10);
chest.position = new Vector3(column, 0f, row);

На игровом поле одновременно находится только одна еда, поэтому игра создаёт её один раз, в Start(), и перемещает каждый раз, когда ей нужно новое место. GameManager отвечает за еду и считывает размер игрового поля из edge змеи через поле snake.

challenge icon

Задание

Средне

Заполни GameManager. Сцена задаёт для него snake змею из головы, а для foodPrefab — красную сферу.

  1. Добавь public Snake snake;, public GameObject foodPrefab; и private Transform food;.
  2. В Start() создай экземпляр foodPrefab, сохрани его Transform в food и вызови MoveFood().
  3. Напиши void MoveFood(): метод размещает food на случайной клетке, где x и z находятся в диапазоне от -snake.edge до snake.edge, а y равно 0.

Нажми Play и найди еду на поле, затем нажми Check.

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

using UnityEngine;

public class GameManager : MonoBehaviour
{
    // Управляет игрой: едой, счётом и завершением игры. В главе 2 этот класс будет дополнен.
}
quiz iconПроверьте себя

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

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