> 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

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

## Lógica condicional

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

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

![](/files/5f30d08d660a32837db1d9537821cab6afa6eae7)

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

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

![](/files/09c468fd5c3f796e0434b715351bd323f8d3caa8)

### 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á em um desses estados. Por exemplo, uma porta pode estar *Open* ou *Fechada*. A ação Abrir define o estado como *Open*, a ação Fechar define o estado como *Fechada*.

Você pode fazer o seguinte com estados:

1. Use uma condição em um gatilho para verificar o estado de uma entity. Dessa forma, a ação só é executada se um estado específico estiver ativo.

![](/files/5f30d08d660a32837db1d9537821cab6afa6eae7)

2. Altere um estado através do **Set State** action.

![](/files/a3aa8eb4636172a215bfe55e57efba9b49d3e152)

3. Reaja a mudanças de estado através do **On State Change** evento de gatilho.

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

![](/files/25da18ec5c5675d9ff3b597690f2f480a2d773c8)

Você pode adicionar quantos estados quiser a um smart item. Basta clicar no **Adicionar novo estado** botão para adicionar outro à lista.

![](/files/7ba1e7a3f0d3f466a7c23a6585d6c4a6e5babd31)

Um dos estados é selecionado como padrão; o item sempre começará neste estado quando a Scene for executada. Você pode atribuir outro estado como padrão clicando no ícone de três pontos ao lado de outro estado 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** gatilho para que a própria porta cuide de reproduzir a animação e o som sempre que o estado mudar.
{% endhint %}

### Counter

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

Quando uma Entity tem um componente Counter, você pode executar as seguintes ações nela:

* **Incrementar Counter**: Incrementa o valor do contador em uma quantidade configurável **Quantidade**, 1 por padrão.
* **Decrementar Counter**: Diminui o valor do contador em uma quantidade configurável **Quantidade**, 1 por padrão.
* **Definir Counter**: Define o valor do contador para um número específico, por exemplo, para defini-lo novamente para 0.

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

![](/files/b7b1348b8a4dc4d7e51395e8b2e8a59f089015f4)

Numa condição, você pode verificar se o valor do contador é

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

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

Para fazer uma ação ocorrer apenas uma vez ao ultrapassar um limite, e não se repetir a cada incremento depois disso, combine o contador com um **State** componente. Defina o estado como "Concluído" sempre que atingir o valor desejado e adicione uma condição para verificar este estado no evento de gatilho.
{% endhint %}

### Veja também

* [Smart items - Noções básicas](/creator/content-creator-pt/scene-editor/interatividade/smart-items.md)
* [Smart Items - Avançado](/creator/content-creator-pt/scene-editor/interatividade/smart-items-advanced.md)
* [Tornando 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/estenda-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 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-pt/scene-editor/interatividade/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.
