> 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-pt/scene-editor/interatividade/states-and-conditions.md).

# Estados e condições

Gerenciando estados de itens e lógica condicional

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

## Lógica condicional

Adicione condições a um trigger, para que a ação só ocorra se essas condições forem cumpridas. Por exemplo, clicar numa porta só ativa a ação "Open" se ela ainda não estiver aberta.

Para adicionar uma condição, clique no ícone de três pontos ao lado de **evento de trigger** e selecione **Adicionar condição de trigger**.

![](https://2402076176-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)

Um único trigger pode incluir várias condições. Clique no **+** ícone para adicionar mais condições. Quando houver mais de uma condição, pode selecionar uma destas opções:

* **Todas as condições devem ser cumpridas (AND)**: O trigger só acontece se todas as condições forem verdadeiras.
* **Qualquer condição pode ser cumprida (OR)** O trigger acontece se pelo menos uma das condições for verdadeira.

![](https://2402076176-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

O **States** o componente está incluído em vários smart items. Ele lista os possíveis estados em que o smart item pode estar. Em qualquer momento, o smart item está num destes estados. Por exemplo, uma porta pode estar *Open* ou *Fechada*. A ação Open define o estado como *Open*, a ação Close define o estado como *Fechada*.

Pode fazer o seguinte com os estados:

1. Use uma condição num trigger para verificar o estado de uma Entity. Desta forma, a ação só é executada se um estado específico estiver ativo.

![](https://2402076176-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. Altere um estado através do **Definir state** action.

![](https://2402076176-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. Reaja a alterações no estado através do **On State Change** evento de trigger.

Para alternar entre duas ações, defina dois triggers, cada um com uma condição que verifica um estado. Por exemplo, as portas têm um trigger que ativa a ação Open, com uma condição que primeiro verifica se o estado da porta é *Fechada*, e outro trigger que ativa a ação Close, com uma condição que verifica se o estado da porta é *Open*. Apenas um dos dois é ativado sempre que o jogador clica na porta.

![](https://2402076176-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)

Pode adicionar quantos estados quiser a um smart item. Basta clicar no **Adicionar novo estado** botão para adicionar mais um à lista.

![](https://2402076176-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)

Um dos estados é selecionado como padrão; o item começará sempre neste estado quando a cena for executada. Pode atribuir outro estado como padrão clicando nos três pontos ao lado de outro dos estados e selecionando **Definir como padrão**.

{% hint style="info" %}
**💡 Dica**: Mantenha as interações entre itens simples. Por exemplo, evite cenários como ter um botão que abre uma porta ao acionar três ações: reproduzir a animação da porta, reproduzir o som da porta e alterar o estado da porta. Em vez disso, faça com que o botão altere o estado da porta. Depois, use um **On State Change** trigger para que a própria porta trate de reproduzir a animação e o som sempre que o estado mudar.
{% endhint %}

### Counter

Use o **Counter** componente Counter para acompanhar um número, que pode mudar à medida que o jogador realiza ações na cena. Pode usar os valores do Counter na lógica condicional.

Quando uma Entity tem um Counter component, pode executar as seguintes ações nele:

* **Incrementar Counter**: Incremente o valor do Counter por uma quantidade configurável **Quantidade**, 1 por predefinição.
* **Diminuir Counter**: Diminua o valor do Counter por uma quantidade configurável **Quantidade**, 1 por predefinição.
* **Definir Counter**: Defina o valor do Counter para um número específico, por exemplo para repô-lo para 0.

Use o **On Counter Change** trigger para executar uma ação sempre que o valor do Counter mudar. Adicione uma condição a este trigger para que ele só seja ativado depois de ultrapassar um determinado limite.

![](https://2402076176-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)

Numa condição, pode verificar se o valor do Counter é

* Maior do que um valor dado
* Menor do que um valor dado
* Igual a um valor dado

{% hint style="info" %}
**💡 Dica**: Para verificar se é maior ou igual, pode adicionar duas condições ao evento de trigger, usando a opção AND.

Para fazer com que uma ação ocorra apenas uma vez ao ultrapassar um limite, e não se repita em cada incremento posterior, combine o Counter com um **State** componente. Defina o State como "Done" sempre que atingir o valor desejado, e adicione uma condição para verificar este estado no evento de trigger.
{% endhint %}

### Ver também

* [Smart items - Noções básicas](/creator/content-creator-pt/scene-editor/interatividade/smart-items.md)
* [Smart items - Advanced](/creator/content-creator-pt/scene-editor/interatividade/smart-items-advanced.md)
* [Tornar qualquer item smart](/creator/content-creator-pt/scene-editor/interatividade/make-any-item-smart.md)
* [Combinar com código](/creator/content-creator-pt/scene-editor/expandir-com-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-pt/scene-editor/interatividade/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.
