---
title: "Animator"
version: snapshot-2026-10-09
engineGeneration: astra-current
language: C#
status: source-reviewed
reviewedAt: 2026-10-09
appRelease: "0.3.0-preview.20261009"
runtimeVerified: false
platformEvidence: []
url: https://astraengine.com.br/pt-br/snapshot-2026-10-09/componentes/astra-animation-animator/
---
# Animator
Máquina de estados: parâmetros, transições, misturas e camadas
**Família:** Animação · **Grupo:** Máquina de estados · **Identificador:** `astra.animation.animator` · **Payload:** 5
:::note[Escopo da evidência]
Este contrato foi extraído dos descritores compilados da engine, incluindo padrões resolvidos. A presença do contrato não substitui a validação do comportamento em um aparelho.
:::
## Para que usar
Escolhe e mistura clipes por uma máquina de estados. Use para repouso, andar, correr e salto de um modelo que já tem animações importadas.
Selecione a raiz do modelo → adicione Animator em Animação → Máquina de estados. Remova Animação legada do mesmo objeto. No cartão, toque Abrir grafo do Animator; em Play, o grafo mostra estado e parâmetros somente para leitura.
## Criar e configurar
Hierarquia → selecione o objeto → Inspector → Adicionar componente → **Animação** / **Máquina de estados** → **Animator**.
O schema permite uma única instância desse tipo por objeto. A fachada C# correspondente é [Astra.Components.Animator](/pt-br/snapshot-2026-10-09/api/astra-components-animator/).
### Campos que ficam no grafo
A tabela automática abaixo cobre o cartão básico; **não cobre as coleções do grafo**. Abra-o para configurar:
| Área | Caminho e uso |
|---|---|
| Parâmetros | Coluna esquerda → + Float/Int/Bool/Gatilho; toque nome e padrão. O tipo deve corresponder ao setter C#. |
| Estados | + Estado → seleção → lado direito: Clipe/Mistura 1D/Mistura 2D, clipes reais, limiares ou posições X/Y. Padrão escolhe a entrada. |
| Transições | Transição → origem ou Qualquer estado → destino; configure duração, tempo de saída e condições. Sem condição correta, o parâmetro sozinho não muda o estado. |
| Camadas | + camada → peso e máscara de subárvore. Camadas são de substituição, sem adição. |
| Eventos | Estado → + evento → tempo normalizado 0–1 e marca numérica entregue ao script. Não é um nome de método arbitrário. |
Limites autorais: 32 parâmetros, 4 camadas, 24 estados e 48 transições por camada, 8 clipes por estado, 4 condições por transição e 8 eventos por estado. Nomes até 63 caracteres. Salve a cena; o grafo pertence ao componente, não a um controller asset separado. Undo/Redo vale para a autoria.
:::caution[Advertência herdada do descritor]
O campo de limitação nativo repete “sem mistura entre clipes” do registro compartilhado de animação. Esse texto está desatualizado para Animator: o grafo desta versão possui mistura 1D/2D e transições. Ele permanece no JSON como dado bruto da extração; não é a descrição editorial do Animator. Root motion, sub-máquinas, interrupção de transições e camadas aditivas continuam ausentes.
:::
**Guia relacionado:** [Grafo, código e evidências](/pt-br/snapshot-2026-10-06/versoes/preview-0-2-3/#animator)
## Exemplo de uso
Crie Float Velocidade e um estado Mistura 1D. Atribua clipes reais de repouso/andar/correr nos limiares 0 / 1 / 2, escolha Velocidade como parâmetro e marque esse estado como Padrão. Em um Behavior, Object.Animator().SetFloat("Velocidade", 1.5f) seleciona a mistura; o Animator não mede a velocidade do corpo por conta própria.
## Dependências
Nenhuma regra adicional declarada no schema deste componente.
## Conflitos
- [Animação](/pt-br/snapshot-2026-10-09/componentes/astra-animation/): Animator e Animação escreveriam a mesma pose; use um dos dois neste objeto
## Edição e ciclo de vida
| Operação | Contrato |
|---|---|
| Adicionar/remover em Play | ponto seguro |
| Alterar propriedades em Play | ponto seguro |
| Múltiplas instâncias | Não |
| Versão do payload | 5 |
Alterações em ponto seguro são aplicadas entre passos da simulação. Um componente exigido por outro não pode ser removido enquanto a dependência existir. Salvar a cena autoral e modificar o mundo de Play são operações distintas; veja [Play e cena autoral](/pt-br/snapshot-2026-10-06/conceitos/play-e-cena-autoral/).
## Propriedades
Valores abaixo são resolvidos pelo descritor de um componente recém-criado. Campos por slot dependem dos recursos atribuídos. Um campo sem padrão significa que o descritor não fornece um valor independente de contexto.
### Recursos do projeto
Estes seletores ficam no componente e não entram na contagem dos campos numéricos. Use recursos registrados do projeto; nome ou caminho externo não substitui uma referência válida.
| Recurso | Onde | Tipo | Uso |
|---|---|---|---|
| **Controller** · `controller` | Inspector → Animator → Animator | animator_controller | Grafo compartilhado; ausente interrompe a avaliação e expõe diagnóstico |
### Animator
| Propriedade | Tipo / unidade | Padrão | Domínio |
|---|---|---|---|
| [**Velocidade**](#field-speed)
`speed` | número · × | 1 | -10 … 10 |
| [**Ativo**](#field-enabled)
`enabled` | booleano | verdadeiro | verdadeiro \| falso |
| [**Ignorar escala de tempo**](#field-unscaled-time)
`unscaled_time` | booleano | falso | verdadeiro \| falso |
| [**Raiz animada**](#field-target)
`target` | referência | Este objeto | qualquer objeto |
| [**Corpo / motor**](#field-motion-source)
`motion_source` | referência | Este objeto | qualquer objeto |
Velocidade · speed
**Onde:** Inspector → **Animator** → **Animator** → **Velocidade**.
**Uso e efeito:** Multiplica o tempo de todos os estados
**Valor:** 1 · **Tipo:** número · **Unidade:** × · **Domínio:** -10 … 10.
Aceita tween numérico via contrato de propriedade. Translação, rotação e escala; pesos de morph não; sem mistura entre clipes Capacidade necessária: `animation.clip`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/).
Ativo · enabled
**Onde:** Inspector → **Animator** → **Animator** → **Ativo**.
**Uso e efeito:** Desligado congela a pose atual; parâmetros e estados são preservados
**Valor:** verdadeiro · **Tipo:** booleano · **Domínio:** verdadeiro \| falso.
Translação, rotação e escala; pesos de morph não; sem mistura entre clipes Capacidade necessária: `animation.clip`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/).
Ignorar escala de tempo · unscaled_time
**Onde:** Inspector → **Animator** → **Animator** → **Ignorar escala de tempo**.
**Uso e efeito:** Anima em tempo real mesmo com o jogo pausado por escala (menus, cutscenes)
**Valor:** falso · **Tipo:** booleano · **Domínio:** verdadeiro \| falso.
Translação, rotação e escala; pesos de morph não; sem mistura entre clipes Capacidade necessária: `animation.clip`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/).
Raiz animada · target
**Onde:** Inspector → **Animator** → **Animator** → **Raiz animada**.
**Uso e efeito:** Objeto cuja hierarquia os clipes animam (o modelo importado)
**Valor:** Este objeto · **Tipo:** referência · **Domínio:** qualquer objeto.
Translação, rotação e escala; pesos de morph não; sem mistura entre clipes Capacidade necessária: `animation.clip`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/).
Corpo / motor · motion_source
**Onde:** Inspector → **Animator** → **Animator** → **Corpo / motor**.
**Uso e efeito:** Fonte dos parâmetros físicos; independe da malha e não move o corpo
**Valor:** Este objeto · **Tipo:** referência · **Domínio:** qualquer objeto.
Translação, rotação e escala; pesos de morph não; sem mistura entre clipes Capacidade necessária: `animation.clip`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/).
### Máscaras
| Propriedade | Tipo / unidade | Padrão | Domínio |
|---|---|---|---|
| [**Máscara · Base**](#field-layer-mask-0)
`layer_mask_0` | referência | Toda a hierarquia | qualquer objeto |
| [**Máscara · Camada 2**](#field-layer-mask-1)
`layer_mask_1` | referência | Toda a hierarquia | qualquer objeto |
| [**Máscara · Camada 3**](#field-layer-mask-2)
`layer_mask_2` | referência | Toda a hierarquia | qualquer objeto |
| [**Máscara · Camada 4**](#field-layer-mask-3)
`layer_mask_3` | referência | Toda a hierarquia | qualquer objeto |
Máscara · Base · layer_mask_0
**Onde:** Inspector → **Animator** → **Máscaras** → **Máscara · Base**.
**Uso e efeito:** Máscara da camada por instância; remapeada em hierarquia/prefab
**Valor:** Toda a hierarquia · **Tipo:** referência · **Domínio:** qualquer objeto.
Campo condicional: o modo/forma/recurso selecionado controla a disponibilidade. Escrita condicionada pelo descritor; trate recusa e verifique autoridade/runtime. Translação, rotação e escala; pesos de morph não; sem mistura entre clipes Capacidade necessária: `animation.clip`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/).
Máscara · Camada 2 · layer_mask_1
**Onde:** Inspector → **Animator** → **Máscaras** → **Máscara · Camada 2**.
**Uso e efeito:** Máscara da camada por instância; remapeada em hierarquia/prefab
**Valor:** Toda a hierarquia · **Tipo:** referência · **Domínio:** qualquer objeto.
Campo condicional: o modo/forma/recurso selecionado controla a disponibilidade. Escrita condicionada pelo descritor; trate recusa e verifique autoridade/runtime. Translação, rotação e escala; pesos de morph não; sem mistura entre clipes Capacidade necessária: `animation.clip`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/).
Máscara · Camada 3 · layer_mask_2
**Onde:** Inspector → **Animator** → **Máscaras** → **Máscara · Camada 3**.
**Uso e efeito:** Máscara da camada por instância; remapeada em hierarquia/prefab
**Valor:** Toda a hierarquia · **Tipo:** referência · **Domínio:** qualquer objeto.
Campo condicional: o modo/forma/recurso selecionado controla a disponibilidade. Escrita condicionada pelo descritor; trate recusa e verifique autoridade/runtime. Translação, rotação e escala; pesos de morph não; sem mistura entre clipes Capacidade necessária: `animation.clip`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/).
Máscara · Camada 4 · layer_mask_3
**Onde:** Inspector → **Animator** → **Máscaras** → **Máscara · Camada 4**.
**Uso e efeito:** Máscara da camada por instância; remapeada em hierarquia/prefab
**Valor:** Toda a hierarquia · **Tipo:** referência · **Domínio:** qualquer objeto.
Campo condicional: o modo/forma/recurso selecionado controla a disponibilidade. Escrita condicionada pelo descritor; trate recusa e verifique autoridade/runtime. Translação, rotação e escala; pesos de morph não; sem mistura entre clipes Capacidade necessária: `animation.clip`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/).
## Roadmap deste componente
[Animação e deformação](/pt-br/snapshot-2026-10-06/roadmap/animacao/). Clipe, misturas 1D/2D, camadas de substituição, condições, eventos e grafo estão na 0.2.3. Pendentes: root motion, sub-máquinas, interrupção e camadas aditivas; sem data prometida.
Os campos acima pertencem ao contrato existente; novas funções dependem do fechamento da família. Não há datas individuais prometidas para cada propriedade.
## Conferir na sua cena
1. Crie **Animator** pelo fluxo indicado e resolva as dependências.
2. Altere uma propriedade por vez e observe o efeito esperado na cena.
3. Salve, reabra e confira os valores autorais.
4. Entre em Play e verifique o comportamento com os recursos reais do projeto.
5. Pare o Play e confira a cena autoral.
Este é um roteiro de conferência; não representa um teste executado nesta publicação.
## Limitações da referência
A tabela cobre os tipos de propriedade disponíveis no descritor de reflexão. Não presume persistência de campos transitórios, equivalência com outras engines ou suporte em todos os aparelhos. Recursos, coleções e operações podem exigir APIs específicas.
**Referência de arquitetura registrada pela engine:** [documentação oficial](https://docs.unity3d.com/6000.0/Documentation/Manual/class-AnimatorController.html). Essa referência não representa paridade funcional.
## Comandos e leituras em Play
Os IDs abaixo são operações nativas do componente existente. Não são novos botões de autoria. Use a fachada C# correspondente para nomes e assinaturas; Conexão de evento oferece as ações compatíveis no seletor. Confira o componente e o mundo vivos antes de chamar.
| Operação / ID | Uso e efeito | Argumentos | Retorno |
|---|---|---|---|
| **Em transição** · `in_transition` | Verdadeiro enquanto a camada base mistura dois estados | Nenhum | booleano |
| **Ler peso** · `get_layer_weight` | Peso efetivo da instância | Camada: inteiro | número |
| **Peso da instância** · `set_layer_weight` | Não altera o recurso compartilhado | Camada: inteiro; Valor: número | nada |
| **Ler composição** · `get_layer_blend` | 0 Override / 1 Additive | Camada: inteiro | inteiro |
| **Composição da instância** · `set_layer_blend` | 0 Override / 1 Additive | Camada: inteiro; 0 Override / 1 Additive: inteiro | nada |
| **Ler tempo de referência** · `get_layer_reference_time` | Segundos no clipe | Camada: inteiro | número |
| **Tempo de referência** · `set_layer_reference_time` | Segundos no clipe | Camada: inteiro; Valor: número | nada |
| **Referência da instância** · `set_layer_reference` | GUID zero usa a pose inicial; desconhecido é recusado | Camada: inteiro; GUID alto: inteiro; GUID baixo: inteiro | nada |
| **GUID alto** · `get_layer_reference_high` | Bits da referência efetiva | Camada: inteiro | inteiro |
| **GUID baixo** · `get_layer_reference_low` | Bits da referência efetiva | Camada: inteiro | inteiro |
| **Restaurar camada** · `reset_layer_overrides` | Restaura a composição autorada, preservando estado e relógio | Camada: inteiro | nada |
[Assinaturas da fachada Animator](/pt-br/snapshot-2026-10-09/api/astra-components-animator/#membros)
## Eventos do componente
No Behavior, a fachada permite inscrever um receptor usando o owner vivo; a inscrição pertence ao lifecycle daquela execução. Uma Conexão de evento precisa de emissor, evento, receptor e ação: adicionar a conexão não define a regra do jogo.
| Evento / ID | Quando ocorre | Dados enviados |
|---|---|---|
| **Entrou no estado** · `state_entered` | Emitido quando um estado começa (no início da transição para ele) | Camada: inteiro; Estado: inteiro |
| **Evento do estado** · `state_event` | Emitido quando o tempo do estado passa por um evento marcado nele | Camada: inteiro; Estado: inteiro; Marca: inteiro |
| **Entrou no grupo** · `machine_entered` | Um grupo tornou-se ativo; da raiz até o grupo interno | Camada: inteiro; Grupo: inteiro |
| **Saiu do grupo** · `machine_exited` | Um grupo deixou de participar da reprodução; do grupo interno à raiz | Camada: inteiro; Grupo: inteiro |
| **Mistura interrompida** · `transition_interrupted` | Pose composta preservada; ID zero indica CrossFade solicitado pela API | Camada: inteiro; Transição cancelada: inteiro; Novo estado: inteiro |