Повторение: состояния двери
Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 32 из 50.
Задание
СреднеДверь замка с замком. Стрелки управляют движением Player, а золотой Key вызывает door.Unlock(), когда игрок подбирает его (оба готовы). IState и StateMachine из этой главы уже есть в проекте. В Door.cs находятся значения из Inspector (closedY 1.5, openY 4, speed 2, stayOpen 2, reach 2.5), поле machine и PlayerNear(). Создай для двери пять состояний в виде классов в DoorStates.cs с именами LockedState, ClosedState, OpeningState, OpenState и ClosingState:
- Изначально дверь Locked. Нажатие пробела рядом с ней (
PlayerNear()) только выводит в журналLocked.Unlock()переводит запертую дверь в состояние Closed и ничего не делает в любом другом состоянии. - Closed: нажатие пробела рядом с дверью запускает её открытие.
- Opening: дверь поднимается со скоростью
speed, пока её координата y не достигнетopenY, после чего она переходит в состояние Open. - Open: через
stayOpenсекунд дверь начинает закрываться. - Closing: дверь опускается со скоростью
speed, пока её координата y не достигнетclosedY, после чего она переходит в состояние Closed. Нажатие пробела рядом с дверью во время опускания снова открывает её с текущего положения.
Нажми Play, попробуй открыть запертую дверь, возьми ключ, открой дверь и пройди через неё, затем нажми Check.
Попробуйте сами
using UnityEngine;
// LockedState, ClosedState, OpeningState, OpenState и ClosingState
Все уроки раздела Архитектура игр в Unity
1Компоненты, а не иерархии
Небольшие компонентыБазовый скрипт врагаАбстрактные компонентыСовместная работа компонентовПовторение: модульная турель4Сериализованные данные
Сериализуемые классыСписки в InspectorПеречисления в InspectorПовторение: таблица лута7Конечные автоматы
Состояния как классыКонечный автоматПереходыЛогика враговПовторение: состояния двери2Интерфейсы в Unity
IDamageableИнтерфейсы и TryGetComponentGetComponentsПовторение: клавиша взаимодействия5ScriptableObjects
Ресурсы данныхХарактеристики оружияОбщие настройкиВолны как данныеПовторение: база предметов