Menu
CoddyTech

Repaso: estados de puertas

Parte de la sección Arquitectura de juegos en Unity del Journey de Unity de Coddy. Lección 32 de 50.

challenge icon

Desafío

Intermedio

Una puerta de castillo con cerradura. Las flechas mueven al jugador, y la llave dorada llama a door.Unlock() cuando el jugador la recoge (ambos listos). IState y la StateMachine del capítulo están en el proyecto. Door.cs tiene los valores del Inspector (closedY 1.5, openY 4, speed 2, stayOpen 2, reach 2.5), un campo machine y PlayerNear(). Dale a la puerta cinco estados, como clases en DoorStates.cs llamadas LockedState, ClosedState, OpeningState, OpenState y ClosingState:

  • La puerta empieza bloqueada. La barra espaciadora cerca de ella (PlayerNear()) solo registra Locked. Unlock() cambia una puerta bloqueada al estado cerrado y no hace nada en ningún otro estado.
  • Cerrada: la barra espaciadora cerca de la puerta empieza a abrirla.
  • Abriéndose: la puerta sube a speed hasta que su y sea openY; entonces queda abierta.
  • Abierta: después de stayOpen segundos empieza a cerrarse.
  • Cerrándose: la puerta baja a speed hasta que su y sea closedY; entonces queda cerrada. Si pulsas la barra espaciadora cerca de ella mientras baja, vuelve a abrirse desde donde está.

Pulsa Play, prueba la puerta bloqueada, recoge la llave, abre la puerta y atraviesa, y después pulsa Check.

Pruébalo tú mismo

using UnityEngine;

// LockedState, ClosedState, OpeningState, OpenState y ClosingState

Todas las lecciones de Arquitectura de juegos en Unity