> 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

{% 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 no estaba ya abierta.

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

![](/files/f1937f498f6e259734f77ad10999a1777e6fa6b0)

Un solo trigger puede incluir varias condiciones. Haz clic en el **+** icono para añadir más condiciones. Cuando exista 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.
* **Cualquier condición puede cumplirse (OR)** El trigger ocurre si al menos una de las condiciones es verdadera.

![](/files/52b46449a3e74f5954835b4d2227fb04ee83c72c)

### States

El **States** El componente está incluido en varios smart items. Enumera los posibles estados en los que puede estar el smart item. En cualquier momento, el smart item está en uno de estos estados. Por ejemplo, una puerta puede estar *Open* ni *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 ese modo, la acción solo se lleva a cabo si un estado específico está activo.

![](/files/f1937f498f6e259734f77ad10999a1777e6fa6b0)

2. Cambia un estado mediante la **Set State** acción.

![](/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 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 *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 se activa uno de los dos 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** botón para añadir otro a la lista.

![](/files/9ae6283418a37ef6a43a7c153d0e5b3d48fab346)

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 el icono de tres puntos junto a otro de los estados y seleccionando **Set as Default**.

{% hint style="info" %}
**💡 Consejo**: Mantén simples las interacciones entre elementos. Por ejemplo, evita escenarios 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 **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 escena. Puedes usar los valores del contador en la lógica condicional.

Cuando una entity tiene un Counter component, puedes ejecutar las siguientes actions sobre ella:

* **Increment Counter**: Incrementa el valor del contador en una **Amount**, por defecto 1.
* **Decrease Counter**: Disminuye el valor del contador en una **Amount**, por defecto 1.
* **Set Counter**: Establece el valor del contador en un número específico, por ejemplo para restablecerlo a 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 al superar un determinado umbral.

![](/files/53c82e8783ba017032ba7d4c60719a236b64e8ba)

En una condition, 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 conditions al trigger event, usando la opción AND.

Para hacer que una acción ocurra solo una vez al superar un umbral, y que no se repita en cada incremento posterior, combina el contador con un **State** component. Establece el State en "Done" cada vez que alcances el valor deseado, y añade una condición para comprobar este State 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 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 dynamically by asking a question.

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

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
