---
title: "IK de cadeia"
version: snapshot-2026-10-16b
engineGeneration: astra-current
language: C#
status: source-reviewed
reviewedAt: 2026-10-16b
appRelease: "0.3.2-preview.20261016"
runtimeVerified: false
platformEvidence: []
url: https://astraengine.com.br/pt-br/snapshot-2026-10-16b/componentes/astra-ik-chain/
---
# IK de cadeia
CCD ou FABRIK em N ossos, com iterações e tolerância
**Família:** Lógica · **Grupo:** IK · **Identificador:** `astra.ik.chain` · **Payload:** 4
:::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
Resolve uma cadeia de N ossos (braço mecânico, cauda, tentáculo) até um alvo por CCD ou FABRIK.
Adicione ao último osso da cadeia, escolha o Comprimento da cadeia e o Solver; aponte o Alvo. O modelo de cena **Braço mecânico com IK de cadeia** mostra o arranjo pronto.
## Criar e configurar
Hierarquia → selecione o objeto → Inspector → Adicionar componente → **Lógica** / **IK** → **IK de cadeia**.
O schema permite uma única instância desse tipo por objeto. A fachada C# correspondente é [Astra.Components.ChainIk](/pt-br/snapshot-2026-10-16b/api/astra-components-chainik/).
CCD converge osso a osso a partir da ponta; FABRIK alterna ida e volta e distribui melhor a curva. Iterações e Tolerância trocam precisão por custo. Direção da dobra, Zero do plano e Rotação do polo valem como no IK de dois ossos.
**Guia relacionado:** [IK e constraints](/pt-br/desenvolvimento/2026-10-11/ik-e-constraints/)
## Exemplo de uso
Braço de quatro segmentos: Comprimento 4, FABRIK, 12 iterações, tolerância .001 m. Mova o alvo: a garra chega em um quadro e a base respeita o Limite de rotação dela.
## Dependências
Nenhuma regra adicional declarada no schema deste componente.
## Conflitos
Nenhuma regra adicional declarada no schema deste componente.
## 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 | 4 |
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.
### Influência
| Propriedade | Tipo / unidade | Padrão | Domínio |
|---|---|---|---|
| [**Peso**](#field-weight)
`weight` | número | 1 | 0 … 1 |
| [**Prioridade**](#field-priority)
`priority` | número | 0 | -100 … 100 |
| [**Ativo**](#field-enabled)
`enabled` | booleano | verdadeiro | verdadeiro \| falso |
Peso · weight
**Onde:** Inspector → **IK de cadeia** → **Influência** → **Peso**.
**Uso e efeito:** 0 desliga, 1 aplica por inteiro; anime para ligar e desligar o efeito com suavidade.
**Valor:** 1 · **Tipo:** número · **Domínio:** 0 … 1.
Aceita tween numérico via contrato de propriedade.
Prioridade · priority
**Onde:** Inspector → **IK de cadeia** → **Influência** → **Prioridade**.
**Uso e efeito:** Ordem entre solvers do mesmo osso: o maior roda por último e vence.
**Valor:** 0 · **Tipo:** número · **Domínio:** -100 … 100.
Aceita tween numérico via contrato de propriedade.
Ativo · enabled
**Onde:** Inspector → **IK de cadeia** → **Influência** → **Ativo**.
**Uso e efeito:** Desligado, o componente fica na cena sem agir.
**Valor:** verdadeiro · **Tipo:** booleano · **Domínio:** verdadeiro \| falso.
### Plano
| Propriedade | Tipo / unidade | Padrão | Domínio |
|---|---|---|---|
| [**Ângulo do plano**](#field-plane-angle)
`plane_angle` | número · ° | 0 | -360 … 360 |
| [**Rotação do polo**](#field-pole-rotation)
`pole_rotation` | número · ° | 0 | -360 … 360 |
| [**Zero do plano X**](#field-plane-zero-x)
`plane_zero_x` | número | 0 | -1 … 1 |
| [**Zero do plano Y**](#field-plane-zero-y)
`plane_zero_y` | número | 0 | -1 … 1 |
| [**Zero do plano Z**](#field-plane-zero-z)
`plane_zero_z` | número | 0 | -1 … 1 |
| [**Referência**](#field-reference)
`reference` | enumeração | Animação | Animação \| Pose de repouso |
| [**Direção da dobra**](#field-pole)
`pole` | referência | Ângulo do plano | qualquer objeto · fora da subárvore |
Ângulo do plano · plane_angle
**Onde:** Inspector → **IK de cadeia** → **Plano** → **Ângulo do plano**.
**Uso e efeito:** Gira o plano da dobra em graus, sem um objeto de direção.
**Valor:** 0 · **Tipo:** número · **Unidade:** ° · **Domínio:** -360 … 360.
Campo condicional: o modo/forma/recurso selecionado controla a disponibilidade. Aceita tween numérico via contrato de propriedade.
Rotação do polo · pole_rotation
**Onde:** Inspector → **IK de cadeia** → **Plano** → **Rotação do polo**.
**Uso e efeito:** Gira o polo em torno do eixo raiz-ponta.
**Valor:** 0 · **Tipo:** número · **Unidade:** ° · **Domínio:** -360 … 360.
Campo condicional: o modo/forma/recurso selecionado controla a disponibilidade. Aceita tween numérico via contrato de propriedade.
Zero do plano X · plane_zero_x
**Onde:** Inspector → **IK de cadeia** → **Plano** → **Zero do plano X**.
**Uso e efeito:** Componente da direção que define o zero do plano da dobra.
**Valor:** 0 · **Tipo:** número · **Domínio:** -1 … 1.
Campo condicional: o modo/forma/recurso selecionado controla a disponibilidade.
Zero do plano Y · plane_zero_y
**Onde:** Inspector → **IK de cadeia** → **Plano** → **Zero do plano Y**.
**Uso e efeito:** Componente da direção que define o zero do plano da dobra.
**Valor:** 0 · **Tipo:** número · **Domínio:** -1 … 1.
Campo condicional: o modo/forma/recurso selecionado controla a disponibilidade.
Zero do plano Z · plane_zero_z
**Onde:** Inspector → **IK de cadeia** → **Plano** → **Zero do plano Z**.
**Uso e efeito:** Componente da direção que define o zero do plano da dobra.
**Valor:** 0 · **Tipo:** número · **Domínio:** -1 … 1.
Campo condicional: o modo/forma/recurso selecionado controla a disponibilidade.
Referência · reference
**Onde:** Inspector → **IK de cadeia** → **Plano** → **Referência**.
**Uso e efeito:** De onde vem o plano da dobra: do alvo ou do próprio objeto.
**Valor:** Animação · **Tipo:** enumeração · **Domínio:** Animação \| Pose de repouso.
Campo condicional: o modo/forma/recurso selecionado controla a disponibilidade.
Direção da dobra · pole
**Onde:** Inspector → **IK de cadeia** → **Plano** → **Direção da dobra**.
**Uso e efeito:** Objeto para onde a dobra aponta; vazio usa o plano configurado.
**Valor:** Ângulo do plano · **Tipo:** referência · **Domínio:** qualquer objeto · fora da subárvore.
Campo condicional: o modo/forma/recurso selecionado controla a disponibilidade.
### Cadeia
| Propriedade | Tipo / unidade | Padrão | Domínio |
|---|---|---|---|
| [**Ossos na cadeia**](#field-chain-length)
`chain_length` | número · ossos | 3 | 2 … 32 |
Ossos na cadeia · chain_length
**Onde:** Inspector → **IK de cadeia** → **Cadeia** → **Ossos na cadeia**.
**Uso e efeito:** Quantos ossos acima deste participam.
**Valor:** 3 · **Tipo:** número · **Unidade:** ossos · **Domínio:** 2 … 32.
Aceita tween numérico via contrato de propriedade.
### Solver
| Propriedade | Tipo / unidade | Padrão | Domínio |
|---|---|---|---|
| [**Iterações máximas**](#field-iterations)
`iterations` | número | 12 | 1 … 128 |
| [**Tolerância**](#field-tolerance)
`tolerance` | número · m | 0.001 | 0.00001 … 1 |
| [**Solver**](#field-solver)
`solver` | enumeração | FABRIK | CCD \| FABRIK \| Plano rotativo |
Iterações máximas · iterations
**Onde:** Inspector → **IK de cadeia** → **Solver** → **Iterações máximas**.
**Uso e efeito:** Mais iterações, mais precisão e mais custo por quadro.
**Valor:** 12 · **Tipo:** número · **Domínio:** 1 … 128.
Aceita tween numérico via contrato de propriedade.
Tolerância · tolerance
**Onde:** Inspector → **IK de cadeia** → **Solver** → **Tolerância**.
**Uso e efeito:** Distância da ponta ao alvo considerada resolvida, em metros.
**Valor:** 0.001 · **Tipo:** número · **Unidade:** m · **Domínio:** 0.00001 … 1.
Aceita tween numérico via contrato de propriedade.
Solver · solver
**Onde:** Inspector → **IK de cadeia** → **Solver** → **Solver**.
**Uso e efeito:** Trigonométrico resolve em um passo; Limb respeita limites do rig; CCD e FABRIK valem para cadeias.
**Valor:** FABRIK · **Tipo:** enumeração · **Domínio:** CCD \| FABRIK \| Plano rotativo.
### Alvo
| Propriedade | Tipo / unidade | Padrão | Domínio |
|---|---|---|---|
| [**Desvio da rotação do alvo X**](#field-target-offset-x)
`target_offset_x` | número · ° | 0 | -360 … 360 |
| [**Desvio da rotação do alvo Y**](#field-target-offset-y)
`target_offset_y` | número · ° | 0 | -360 … 360 |
| [**Desvio da rotação do alvo Z**](#field-target-offset-z)
`target_offset_z` | número · ° | 0 | -360 … 360 |
| [**Ponta segue rotação do alvo**](#field-match-target-rotation)
`match_target_rotation` | booleano | falso | verdadeiro \| falso |
| [**Alvo**](#field-target)
`target` | referência | Escolher alvo | qualquer objeto · fora da subárvore |
Desvio da rotação do alvo X · target_offset_x
**Onde:** Inspector → **IK de cadeia** → **Alvo** → **Desvio da rotação do alvo X**.
**Uso e efeito:** Desvio em graus somado à rotação do alvo quando a ponta a segue.
**Valor:** 0 · **Tipo:** número · **Unidade:** ° · **Domínio:** -360 … 360.
Campo condicional: o modo/forma/recurso selecionado controla a disponibilidade. Aceita tween numérico via contrato de propriedade.
Desvio da rotação do alvo Y · target_offset_y
**Onde:** Inspector → **IK de cadeia** → **Alvo** → **Desvio da rotação do alvo Y**.
**Uso e efeito:** Desvio em graus somado à rotação do alvo quando a ponta a segue.
**Valor:** 0 · **Tipo:** número · **Unidade:** ° · **Domínio:** -360 … 360.
Campo condicional: o modo/forma/recurso selecionado controla a disponibilidade. Aceita tween numérico via contrato de propriedade.
Desvio da rotação do alvo Z · target_offset_z
**Onde:** Inspector → **IK de cadeia** → **Alvo** → **Desvio da rotação do alvo Z**.
**Uso e efeito:** Desvio em graus somado à rotação do alvo quando a ponta a segue.
**Valor:** 0 · **Tipo:** número · **Unidade:** ° · **Domínio:** -360 … 360.
Campo condicional: o modo/forma/recurso selecionado controla a disponibilidade. Aceita tween numérico via contrato de propriedade.
Ponta segue rotação do alvo · match_target_rotation
**Onde:** Inspector → **IK de cadeia** → **Alvo** → **Ponta segue rotação do alvo**.
**Uso e efeito:** A ponta copia a rotação do alvo, com o desvio em graus abaixo.
**Valor:** falso · **Tipo:** booleano · **Domínio:** verdadeiro \| falso.
Campo condicional: o modo/forma/recurso selecionado controla a disponibilidade.
Alvo · target
**Onde:** Inspector → **IK de cadeia** → **Alvo** → **Alvo**.
**Uso e efeito:** Objeto da cena que o solver alcança; as receitas criam um alvo nomeado ao lado do personagem.
**Valor:** Escolher alvo · **Tipo:** referência · **Domínio:** qualquer objeto · fora da subárvore.
## Roadmap deste componente
[Objetos, Behaviors e composição](/pt-br/snapshot-2026-10-06/roadmap/objetos-e-scripts/). Presente na 0.3.1. Sem alvos intermediários nem pesos por osso. 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 **IK de cadeia** 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/Packages/com.unity.animation.rigging@1.2/manual/constraints/ChainIKConstraint.html). Essa referência não representa paridade funcional.