Contenido del curso

El personaje y el controlador

Diseño procedural de niveles 2D

HUD, menús y gameplay

Enemigos y dificultad

Estados de juego con teclas en Unity

Resumen

Controlar los estados de un videojuego en Unity es clave para una experiencia fluida. Aquí verás cómo pasar del estado de menú a estado de juego con una tecla, usando un GameManager y métodos simples como startGame, gameOver y backToMenu. Todo está enfocado a construir una base sólida y escalable hacia UI y más plataformas.

¿Cómo iniciar desde un estado de menú en Unity?

Por defecto, el GameManager arranca en menú/pausa. En lugar de comenzar con el protagonista moviéndose, se propone escuchar una tecla en Update para iniciar la partida. Además, es buena práctica limpiar el código: eliminar la instancia compartida usada para arrancar al tocar el suelo y quitar los TODOs completados.

La lógica mínima en el controlador del jugador es escuchar la tecla y arrancar:

void Update() { if (Input.GetKeyDown(KeyCode.S)) { startGame(); } }
  • Estado inicial: menú pausado.
  • Acción del usuario: pulsar S.
  • Efecto: llamar a startGame para cambiar a juego.

¿Qué hace cada método de cambio de estado?

Cada método delega el cambio real en un único punto de verdad: setGameState. Así se mantiene el control centralizado y el código claro. Los métodos propuestos son directos y legibles.

public void startGame() { setGameState(GameState.InGame); } public void gameOver() { setGameState(GameState.GameOver); } public void backToMenu() { setGameState(GameState.Menu); }
  • Un solo responsable del cambio: setGameState.
  • Estados del flujo: Menu, InGame, GameOver.
  • Beneficio: transiciones consistentes y fáciles de extender.

¿Por qué centralizar el setGameState?

  • Evita duplicar lógica en varios sitios.
  • Facilita depuración y futuras reglas de transición.
  • Permite añadir efectos globales: pausa, UI, audio.

¿Qué teclas y flujos puedes probar ahora?

Además de usar S para iniciar, puedes habilitar una tecla para volver al menú. Por ejemplo, P para pausar y regresar. Esto refuerza el patrón de estados y sienta bases para migrar luego a botones e interfaces gráficas.

void Update() { if (Input.GetKeyDown(KeyCode.S)) { startGame(); } if (Input.GetKeyDown(KeyCode.P)) { backToMenu(); } }
  • S: pasar de menú a juego.
  • P: volver del juego al menú.
  • Próximo paso: reemplazar teclado por UI con botones.
  • Objetivo: escalar a cualquier plataforma con herramientas de Unity.

¿Te gustaría ver ejemplos con UI y botones para estos estados o integrar un flujo de pausa completa? Cuéntame qué necesitas y lo preparamos.