Повторение: состояния двери
Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 41 из 64.
В этой главе для каждого состояния был создан отдельный класс, все состояния запускались с помощью одного StateMachine, и каждое состояние само выбирало способ выхода из него. В двери сочетаются все три подхода.
Задание
СреднеЗаполни пять состояний двери замка в DoorStates.cs; в Door.cs есть вспомогательные методы.
- Заперто:
door.PressedNear()записывает в журналLocked.Door.Unlock()переводит запертую дверь в состояниеclosed. - Закрыто:
PressedNear()переводит в состояниеopening. Открывается: как толькоdoor.SlideTo(door.openY)возвращает true, переходит в состояниеopen. - Открыто: через
door.stayOpenсекунд переходит в состояниеclosing. - Закрывается:
PressedNear()снова открывает дверь; иначе, как толькоSlideTo(door.closedY)возвращает true, переходит в состояниеclosed.
Нажми «Играть», возьми ключ и открой дверь. Затем нажми «Проверить».
Попробуйте сами
using UnityEngine;
public class LockedState : IState
{
private Door door;
public LockedState(Door door)
{
this.door = door;
}
public void Enter()
{
}
public void Tick()
{
}
public void Exit()
{
}
}
public class ClosedState : IState
{
private Door door;
public ClosedState(Door door)
{
this.door = door;
}
public void Enter()
{
}
public void Tick()
{
}
public void Exit()
{
}
}
public class OpeningState : IState
{
private Door door;
public OpeningState(Door door)
{
this.door = door;
}
public void Enter()
{
}
public void Tick()
{
}
public void Exit()
{
}
}
public class OpenState : IState
{
private Door door;
public OpenState(Door door)
{
this.door = door;
}
public void Enter()
{
}
public void Tick()
{
}
public void Exit()
{
}
}
public class ClosingState : IState
{
private Door door;
public ClosingState(Door door)
{
this.door = door;
}
public void Enter()
{
}
public void Tick()
{
}
public void Exit()
{
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Архитектура игр в Unity
1Компоненты, а не иерархии
Небольшие компонентыБазовый скрипт врагаАбстрактные компонентыКомпоненты работают вместеПовторение: модульная турельПовторение: спаренная пушка4Сериализованные данные
Сериализуемые классыСписки в инспектореПеречисления в инспектореПовторение: таблица добычиПовторение: определяем добычу7Машины состояний
Состояния как классыСостояние тревогиМашина состоянийПереходыЛогика враговРыцарь атакуетПовторение: состояния двери2Интерфейсы в Unity
IDamageableИнтерфейсы и TryGetComponentGetComponentsПовторение: клавиша взаимодействияПовторение: ближайший в пределах досягаемости5ScriptableObjects
Ресурсы данныхХарактеристики оружияОбщие настройкиСохраняем ветерВолны как данныеПовторение: база предметовПовторение: покупка в магазинеПотренируйтесь самостоятельно: Песочница Unity