Lógica condicional en gameplay: if, else y operadores

Implementa decisiones de juego con condicionales claras para controlar estados, reglas y feedback sin código espagueti.

Las condicionales controlan decisiones del juego: daño, victoria, derrota, activación de poderes o desbloqueo de puertas.

Una condición bien nombrada hace más mantenible el código que una cadena larga de ifs sin intención clara.

Operadores lógicos (`&&`, `||`, `!`) permiten combinar reglas de gameplay de forma expresiva.

Cuando los estados crecen, conviene evolucionar de condicionales sueltas a una máquina de estados simple.

  • Cada condicional debe responder una pregunta de gameplay concreta.
  • No escribas condiciones por escribir: define primero qué regla de juego estás evaluando (por ejemplo, ¿el jugador tiene vida suficiente para interactuar?).
  • Evita anidación excesiva. Si hay demasiadas ramas, extrae métodos con nombres claros como `PuedeSaltar()` o `TieneMunicion()`.
  • Un bloque condicional limpio facilita balanceo y pruebas, porque puedes cambiar reglas sin romper otras partes del sistema.
  • Condición = regla de diseño.

If/else con intención de diseño

Cada condicional debe responder una pregunta de gameplay concreta.

No escribas condiciones por escribir: define primero qué regla de juego estás evaluando (por ejemplo, ¿el jugador tiene vida suficiente para interactuar?).

Evita anidación excesiva. Si hay demasiadas ramas, extrae métodos con nombres claros como `PuedeSaltar()` o `TieneMunicion()`.

Un bloque condicional limpio facilita balanceo y pruebas, porque puedes cambiar reglas sin romper otras partes del sistema.

  • Condición = regla de diseño.
  • Ramas cortas y con nombres semánticos.
  • Menos anidación, más legibilidad.

Operadores lógicos para reglas combinadas

Combinar condiciones te permite expresar gameplay real sin duplicar código.

Con `&&` exiges que se cumplan dos reglas a la vez (por ejemplo: tiene llave y energía suficiente).

Con `||` aceptas alternativas (por ejemplo: entrar si tiene pase VIP o nivel superior a 10).

Con `!` inviertes una condición (por ejemplo: no está en cooldown), útil para bloquear acciones temporalmente.

Cuándo pasar de if a switch

Switch mejora lectura cuando comparas un mismo valor contra muchos casos.

Si evalúas el estado de un personaje (`Idle`, `Run`, `Attack`, `Stunned`) con muchos `if/else if`, un `switch` suele ser más claro.

`switch` reduce errores al añadir nuevos estados y obliga a pensar un caso por defecto para estados no contemplados.

Para lógica de estados más compleja, el siguiente paso es un patrón de máquina de estados, pero `switch` ya ofrece orden en fases intermedias.

Unity
09

Lógica condicional en gameplay: if, else y operadores

Implementa decisiones de juego con condicionales claras para controlar estados, reglas y feedback sin código espagueti.

Código del tema: GameObject + Component = comportamiento

📘 Teoría

If/else con intención de diseño

Cada condicional debe responder una pregunta de gameplay concreta.

No escribas condiciones por escribir: define primero qué regla de juego estás evaluando (por ejemplo, ¿el jugador tiene vida suficiente para interactuar?).

Evita anidación excesiva. Si hay demasiadas ramas, extrae métodos con nombres claros como `PuedeSaltar()` o `TieneMunicion()`.

Un bloque condicional limpio facilita balanceo y pruebas, porque puedes cambiar reglas sin romper otras partes del sistema.

  • Condición = regla de diseño.
  • Ramas cortas y con nombres semánticos.
  • Menos anidación, más legibilidad.

Operadores lógicos para reglas combinadas

Combinar condiciones te permite expresar gameplay real sin duplicar código.

1

Con `&&` exiges que se cumplan dos reglas a la vez (por ejemplo: tiene llave y energía suficiente).

2

Con `||` aceptas alternativas (por ejemplo: entrar si tiene pase VIP o nivel superior a 10).

3

Con `!` inviertes una condición (por ejemplo: no está en cooldown), útil para bloquear acciones temporalmente.

Condicionales de gameplay en script Unity
using UnityEngine;

public class DoorLogic : MonoBehaviour
{
    public bool tieneLlave;
    public bool enCombate;
    public int energia = 40;

    public bool PuedeAbrirPuerta()
    {
        return tieneLlave && !enCombate && energia >= 20;
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.E))
        {
            if (PuedeAbrirPuerta())
            {
                Debug.Log("Puerta abierta");
            }
            else
            {
                Debug.Log("No cumples condiciones para abrir");
            }
        }
    }
}

Cuándo pasar de if a switch

Switch mejora lectura cuando comparas un mismo valor contra muchos casos.

1

Si evalúas el estado de un personaje (`Idle`, `Run`, `Attack`, `Stunned`) con muchos `if/else if`, un `switch` suele ser más claro.

2

`switch` reduce errores al añadir nuevos estados y obliga a pensar un caso por defecto para estados no contemplados.

3

Para lógica de estados más compleja, el siguiente paso es un patrón de máquina de estados, pero `switch` ya ofrece orden en fases intermedias.

🧪 Aprende probando

Ejemplo Ejemplo guiado Reescribe las condiciones para añadir una regla de cooldown sin romper la lógica actual.

🏁 Retos

Reto Reto práctico Crea una condición para activar sprint solo si hay energía suficiente y el jugador no está aturdido.

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .