Ловец
Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 36 из 67.
В этой главе мы создадим небольшую игру Catch the Star, добавляя по одной функции в каждом уроке: звезда падает, вы двигаете ловушку под ней влево и вправо, за каждое пойманное падение начисляются очки, а следующая звезда падает быстрее, и три промаха завершают игру. Всё это реализовано в одном скрипте Catcher, который находится на ловушке. Первая функция — движение: ловушка перемещается с помощью клавиш со стрелками и никогда не покидает пол.
Чтобы удерживать число в заданных пределах, используется Mathf.Clamp(value, min, max). Если значение меньше min, функция возвращает min; если оно больше max — max; в остальных случаях возвращает само значение. Эта камера следует за игроком вверх по башне, но её высота остаётся в пределах от 2 до 12:
[SerializeField] private Transform player;
void Update()
{
float y = Mathf.Clamp(player.position.y, 2f, 12f);
transform.position = new Vector3(transform.position.x, y, transform.position.z);
}Clamp возвращает новое число и сам по себе ничего не изменяет, поэтому результат нужно присвоить. Применяйте Clamp после всех изменений за кадр и до того, как запишете позицию обратно, — тогда ни в одном кадре объект не окажется за пределами.
Задание
СреднеДобавь движение ловцу (синей полоске). Пока удерживается клавиша со стрелкой вправо, он скользит вправо (вдоль +x), а пока удерживается клавиша со стрелкой влево — влево, в обоих случаях со скоростью speed единиц в секунду. Его y и z никогда не меняются.
Пол простирается от x = -5 до x = 5, а ширина ловца составляет 2 единицы. Ограничь его x так, чтобы ловец целиком всегда оставался на полу.
Нажми Play, щёлкни по игре и попробуй нажимать клавиши со стрелками, затем нажми Check.
Попробуйте сами
using UnityEngine;
public class Catcher : MonoBehaviour
{
[SerializeField] private float speed = 6f;
void Update()
{
// Стрелки: перемещайте ловушку вдоль оси x со скоростью speed единиц в секунду.
// Следите, чтобы ловушка целиком оставалась на полу (x от -5 до 5, ширина ловушки — 2).
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы скриптинга в Unity
1Ваш первый скрипт
Привет, UnityРазместите кубДвигайте каждый кадрПоворачивайте каждую секундуУправляйте клавишамиПовторение: управляйте кубом2Инспектор
Поля инспектораSerializeFieldЧисла с плавающей точкой и MathfАтрибуты инспектораПовторение: лифт5Преобразования и иерархия
Родители и детиМасштабПосмотри на объектыДвигайся к точкеПовторение: Луна на орбите6Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказать и скрытьПовторение: выключатель света