Menu
CoddyTech

Повторение: состояния двери

Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 32 из 50.

challenge icon

Задание

Средне

Дверь замка с замком. Стрелки управляют движением 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