# Estados y condiciones

{% embed url="<https://www.youtube.com/watch?v=wm8ZD2kSyKA>" %}

## Lógica condicional

Añade condiciones a un trigger, de modo que la acción solo ocurra si se cumplen esas condiciones. Por ejemplo, hacer clic en una puerta solo activa la acción "Open" si aún no estaba abierta.

Para añadir una condición, haz clic en el ícono de los tres puntos junto a **Trigger event** y selecciona **Add Trigger Condition**.

![](/files/f1937f498f6e259734f77ad10999a1777e6fa6b0)

Un solo trigger puede incluir múltiples condiciones. Haz clic en el **+** ícono para añadir más condiciones. Cuando existe más de una condición, puedes seleccionar una de estas opciones:

* **Todas las condiciones deben cumplirse (AND)**: El trigger solo ocurre si todas y cada una de las condiciones son verdaderas.
* **Cualquier condición puede cumplirse (OR)** El trigger ocurre si al menos una de las condiciones es verdadera.

![](/files/52b46449a3e74f5954835b4d2227fb04ee83c72c)

### States

El **States** componente se incluye en varios smart items. Enumera los posibles estados en los que puede estar el smart item. En cualquier momento dado, el smart item está en uno de estos estados. Por ejemplo, una puerta puede estar *Open* o *Cerrada*. La acción Open establece el estado en *Open*, la acción Close establece el estado en *Cerrada*.

Puedes hacer lo siguiente con los estados:

1. Usa una condición en un trigger para comprobar el estado de una Entity. De esa manera, la acción solo se lleva a cabo si un estado específico está activo.

![](/files/f1937f498f6e259734f77ad10999a1777e6fa6b0)

2. Cambia un estado mediante el **Set State** action.

![](/files/900f03741ba7d64f77189a50b04d5dae4bb100d8)

3. Reacciona a los cambios de estado mediante el **On State Change** trigger event.

Para alternar entre dos acciones, define dos triggers, cada uno con una condición que compruebe un estado. Por ejemplo, las puertas tienen un trigger que activa la acción Open, con una condición que primero comprueba que el estado de la puerta es *Cerrada*, y otro trigger que activa la acción Close, con una condición que comprueba que el estado de la puerta es *Open*. Solo uno de los dos se activa cada vez que el jugador hace clic en la puerta.

![](/files/c642bc124e70eba63361b806363df4846b84d068)

Puedes añadir tantos estados como quieras a un smart item. Solo haz clic en el **Add New State** button para añadir otro a la lista.

![](/files/9ae6283418a37ef6a43a7c153d0e5b3d48fab346)

Uno de los estados se selecciona como predeterminado; el item siempre comenzará en este estado cuando se ejecute la scene. Puedes asignar otro estado como predeterminado haciendo clic en los tres puntos junto a otro de los estados y seleccionando **Set as Default**.

{% hint style="info" %}
**💡 Consejo**: Mantén simples las interacciones entre items. Por ejemplo, evita escenarios como tener un button que abre una puerta activando tres acciones: reproducir la animación de la puerta, reproducir el sonido de la puerta y cambiar el estado de la puerta. En su lugar, haz que el button cambie el estado de la puerta. Luego usa un **On State Change** trigger para que la propia puerta se encargue de reproducir la animación y el sonido cada vez que cambie el estado.
{% endhint %}

### Counter

Usa la **Counter** componente para llevar un registro de un número, que puede cambiar a medida que el jugador realiza acciones en la scene. Puedes usar los valores del contador en la lógica condicional.

Cuando una Entity tiene un componente Counter, puedes ejecutar las siguientes acciones sobre ella:

* **Increment Counter**: Incrementa el valor del contador en 1.
* **Decrease Counter**: Disminuye el valor del contador en 1.
* **Set Counter**: Establece el valor del contador en un número específico, por ejemplo para volver a ponerlo en 0.

Usa la **On Counter Change** trigger para realizar una acción cada vez que cambie el valor del contador. Añade una condición a este trigger para que solo se active después de superar un cierto umbral.

![](/files/53c82e8783ba017032ba7d4c60719a236b64e8ba)

En una condición, puedes comprobar si el valor del contador es

* Mayor que un valor dado
* Menor que un valor dado
* Igual a un valor dado

{% hint style="info" %}
**💡 Consejo**: Para comprobar si es mayor o igual, puedes añadir dos condiciones al trigger event, usando la opción AND.

Para hacer que una acción ocurra solo una vez al superar un umbral, y no se repita en cada incremento posterior, combina el contador con un **State** componente. Establece el estado en "Done" cada vez que alcances el valor deseado, y añade una condición para comprobar este estado en el trigger event.
{% endhint %}

### Ver también

* [Smart items - Basics](/creator/content-creator-es/scene-editor/interactividad/smart-items.md)
* [Smart items - Advanced](/creator/content-creator-es/scene-editor/interactividad/smart-items-advanced.md)
* [Hacer cualquier item smart](/creator/content-creator-es/scene-editor/interactividad/make-any-item-smart.md)
* [Combinar con código](/creator/content-creator-es/scene-editor/extender-con-codigo/overview.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.decentraland.org/creator/content-creator-es/scene-editor/interactividad/states-and-conditions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
