Menu
CoddyTech

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

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

В этой главе для каждого состояния был создан отдельный класс, все состояния запускались с помощью одного StateMachine, и каждое состояние само выбирало способ выхода из него. В двери сочетаются все три подхода.

challenge icon

Задание

Средне

Заполни пять состояний двери замка в DoorStates.cs; в Door.cs есть вспомогательные методы.

  1. Заперто: door.PressedNear() записывает в журнал Locked. Door.Unlock() переводит запертую дверь в состояние closed.
  2. Закрыто: PressedNear() переводит в состояние opening. Открывается: как только door.SlideTo(door.openY) возвращает true, переходит в состояние open.
  3. Открыто: через door.stayOpen секунд переходит в состояние closing.
  4. Закрывается: 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()
    {
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Архитектура игр в Unity

Потренируйтесь самостоятельно: Песочница Unity