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
Para que usar
Seção intitulada “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
Seção intitulada “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.
Campos que ficam no grafo
Seção intitulada “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.
Guia relacionado: Grafo, código e evidências
Exemplo de uso
Seção intitulada “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
Seção intitulada “Dependências”Nenhuma regra adicional declarada no schema deste componente.
Conflitos
Seção intitulada “Conflitos”- Animação: Animator e Animação escreveriam a mesma pose; use um dos dois neste objeto
Edição e ciclo de vida
Seção intitulada “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.
Propriedades
Seção intitulada “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
Seção intitulada “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
Seção intitulada “Animator”| Propriedade | Tipo / unidade | Padrão | Domínio |
|---|---|---|---|
Velocidadespeed |
número · × | 1 | -10 … 10 |
Ativoenabled |
booleano | verdadeiro | verdadeiro | falso |
Ignorar escala de tempounscaled_time |
booleano | falso | verdadeiro | falso |
Raiz animadatarget |
referência | Este objeto | qualquer objeto |
Corpo / motormotion_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.
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.
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.
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.
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.
Máscaras
Seção intitulada “Máscaras”| Propriedade | Tipo / unidade | Padrão | Domínio |
|---|---|---|---|
Máscara · Baselayer_mask_0 |
referência | Toda a hierarquia | qualquer objeto |
Máscara · Camada 2layer_mask_1 |
referência | Toda a hierarquia | qualquer objeto |
Máscara · Camada 3layer_mask_2 |
referência | Toda a hierarquia | qualquer objeto |
Máscara · Camada 4layer_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.
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.
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.
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.
Roadmap deste componente
Seção intitulada “Roadmap deste componente”Animação e deformação. 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
Seção intitulada “Conferir na sua cena”- Crie Animator pelo fluxo indicado e resolva as dependências.
- Altere uma propriedade por vez e observe o efeito esperado na cena.
- Salve, reabra e confira os valores autorais.
- Entre em Play e verifique o comportamento com os recursos reais do projeto.
- 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
Seção intitulada “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. Essa referência não representa paridade funcional.
Comandos e leituras em Play
Seção intitulada “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
Eventos do componente
Seção intitulada “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 |