Еда
Урок 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.
Задание
СреднеЗаполни GameManager. Сцена задаёт для него snake змею из головы, а для foodPrefab — красную сферу.
- Добавь
public Snake snake;,public GameObject foodPrefab;иprivate Transform food;. - В
Start()создай экземплярfoodPrefab, сохрани его Transform вfoodи вызовиMoveFood(). - Напиши
void MoveFood(): метод размещаетfoodна случайной клетке, где x и z находятся в диапазоне от-snake.edgeдоsnake.edge, а y равно 0.
Нажми Play и найди еду на поле, затем нажми Check.
Попробуйте сами
using UnityEngine;
public class GameManager : MonoBehaviour
{
// Управляет игрой: едой, счётом и завершением игры. В главе 2 этот класс будет дополнен.
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.