> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/creator/content-creator-es/scene-editor/interactividad/states-and-conditions.md).

# Estados y condiciones

Gestionar estados de los ítems y lógica condicional

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

## Lógica condicional

Añade condiciones a un Trigger, para 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 no estaba ya abierta.

Para añadir una condición, haz clic en el icono de los tres puntos junto a **evento de Trigger** y selecciona **Añadir condición de Trigger**.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-7bb63e09d7e61b57709e9fdc983047a25e33dc5a%2Fcondition.png?alt=media\&token=0307c6b8-b072-4bcf-805b-3b85f6793d09)

Un solo Trigger puede incluir varias condiciones. Haz clic en el **+** icono para añadir más condiciones. Cuando existan más de una condición, puedes seleccionar una de estas opciones:

* **Todas las condiciones deben cumplirse (AND)**: El Trigger solo ocurre si cada una de las condiciones es verdadera.
* **Cualquiera de las condiciones puede cumplirse (OR)** El Trigger ocurre si al menos una de las condiciones es verdadera.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-588927ea5768c6e3a1490d5335c5d89047a1fe2c%2Fmultiple-conditions.png?alt=media\&token=889132f5-cb4f-432f-ba48-82b042e7ef65)

### States

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

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.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-7bb63e09d7e61b57709e9fdc983047a25e33dc5a%2Fcondition.png?alt=media\&token=0307c6b8-b072-4bcf-805b-3b85f6793d09)

2. Cambiar un estado mediante el **Establecer estado** acción.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-a1d45062ce10c08e424bc3948bf2d7eaff1b15be%2Fset-state.png?alt=media\&token=b02a5064-a480-4be6-865a-707a7e97c725)

3. Reaccionar a los cambios de estado mediante el **Cambio de estado** evento de Trigger.

Para alternar entre dos acciones, define dos Triggers, cada uno con una condición que comprueba 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 *Cerrado*, 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.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-03ba26fa1e6024bd4811bac4289684be640d33c3%2Fdoor_conditions.png?alt=media\&token=e4cd0c18-b41c-4549-8e94-57c85c95e412)

Puedes añadir tantos estados como quieras a un smart item. Solo haz clic en el **Añadir nuevo estado** botón para añadir otro a la lista.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-56792d2ce50169a8f8c2707c74297df1a024aed1%2Fnew_state.png?alt=media\&token=8c933266-0c66-405a-a4ce-7374ae5e7f6b)

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

{% hint style="info" %}
**💡 Consejo**: Mantén simples las interacciones entre elementos. Por ejemplo, evita situaciones como tener un botón 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 botón cambie el estado de la puerta. Luego usa un **Cambio de estado** 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 el **Counter** componente para hacer un seguimiento de un número, que puede cambiar a medida que el jugador realiza acciones en la escena. 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:

* **Incrementar contador**: Incrementa el valor del contador en una cantidad configurable **Cantidad**, 1 por defecto.
* **Disminuir contador**: Disminuye el valor del contador en una cantidad configurable **Cantidad**, 1 por defecto.
* **Establecer contador**: Establece el valor del contador en un número específico, por ejemplo para restablecerlo a 0.

Usa el **Cambio de contador** Trigger para realizar una acción cada vez que cambia el valor del contador. Añade una condición a este Trigger para que solo se active al superar un determinado umbral.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-c32416d2c7479d26d2cb70ef7f9440d149911e0b%2Fon_counter_change.png?alt=media\&token=708c6da5-7773-4899-b45e-64f9e47e8e28)

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 evento de Trigger, 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 State en "Done" cada vez que alcances el valor deseado, y añade una condición para comprobar este estado en el evento de Trigger.
{% endhint %}

### Ver también

* [Smart items - Básicos](/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 smart cualquier item](/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
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
