--- title: "Projétil" version: snapshot-2026-10-28 engineGeneration: astra-current language: C# status: source-reviewed reviewedAt: 2026-10-28 appRelease: "0.4.0-preview.20261028" runtimeVerified: false platformEvidence: [] url: https://astraengine.com.br/pt-br/snapshot-2026-10-28/componentes/astra-effects-projectile/ --- # Projétil Anda pela frente; no primeiro acerto cria o impacto, solta os rastros e some **Família:** Efeitos · **Grupo:** Comportamentos · **Identificador:** `astra.effects.projectile` · **Payload:** 1 :::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 Move o objeto para a frente; no primeiro acerto cria o Impacto, solta os rastros configurados e some. Converte o script de projétil dos pacotes de efeitos. Adicione ao objeto do projétil. Defina Velocidade, Vida e Raio do teste de acerto, escolha os recursos Impacto e Disparo (prefabs) e, em Soltar 1..4, os filhos de rastro que devem continuar no mundo depois do acerto. ## Vindo de outra engine Na Unity, o conceito mais próximo está em [Collider.OnCollisionEnter](https://docs.unity3d.com/6000.0/Documentation/ScriptReference/Collider.OnCollisionEnter.html). A Astra estudou essa referência; os campos e o comportamento são os desta página, sem paridade garantida. Palavras que a busca de Adicionar componente aceita: `Projectile`, `ProjectileMover`, `Bala`, `Tiro`, `Magia`, `Bola`, `de`, `fogo`. ## Criar e configurar Hierarquia → selecione o objeto → Inspector → Adicionar componente → **Efeitos** / **Comportamentos** → **Projétil**. O schema permite uma única instância desse tipo por objeto. A fachada C# correspondente é [Astra.Components.Projectile](/pt-br/snapshot-2026-10-28/api/astra-components-projectile/). Impacto virado para o atirador orienta o efeito de volta para quem atirou; Giro do impacto corrige prefabs modelados em outro eixo. Disparo é criado na origem quando o projétil nasce. **Guia relacionado:** [Importação de pacotes](/pt-br/snapshot-2026-10-06/versoes/preview-0-4-0/#importação-de-pacotes) ## Exemplo de uso Bola de fogo: Velocidade 15 m/s, Vida 5 s, Raio 0,1; Impacto = prefab de explosão; Soltar 1 = filho Trilha. Instanciada pelo script a 1 m à frente do jogador, ela anda, acerta a parede, cria a explosão no ponto e a trilha se desfaz sozinha. ## 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 | 1 | 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 | |---|---|---|---| | **Impacto** · `impact` | Inspector → Projétil → Ao acertar | prefab | Prefab criado no ponto do acerto e destruído quando as partículas dele terminam | | **Disparo** · `muzzle` | Inspector → Projétil → Projétil | prefab | Prefab criado na saída (clarão do disparo) e destruído quando termina | ### Projétil | Propriedade | Tipo / unidade | Padrão | Domínio | |---|---|---|---| | [**Velocidade**](#field-speed)
`speed` | número · m/s | 15 | 0 … 10000 | | [**Vida**](#field-lifetime)
`lifetime` | número · s | 5 | 0.05 … 3600 | | [**Raio**](#field-radius)
`radius` | número · m | 0.1 | 0 … 100 | | [**Ativo**](#field-enabled)
`enabled` | booleano | verdadeiro | verdadeiro \| falso | | [**Frente**](#field-forward-axis)
`forward_axis` | enumeração | +Z (Astra) | +Z (Astra) \| −Z (Unity) |

Velocidade · speed

**Onde:** Inspector → **Projétil** → **Projétil** → **Velocidade**. **Uso e efeito:** Avança pela frente do objeto em Play **Valor:** 15 · **Tipo:** número · **Unidade:** m/s · **Domínio:** 0 … 10000. Aceita tween numérico via contrato de propriedade. Em Play: avança pela frente com consulta esférica à física, cria Disparo e Impacto (prefabs destruídos ao fim das partículas), solta os filhos marcados e some; Vida máxima Capacidade necessária: `render.effects.projectile`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/).

Vida · lifetime

**Onde:** Inspector → **Projétil** → **Projétil** → **Vida**. **Uso e efeito:** Destruído depois deste tempo mesmo sem acertar nada **Valor:** 5 · **Tipo:** número · **Unidade:** s · **Domínio:** 0.05 … 3600. Em Play: avança pela frente com consulta esférica à física, cria Disparo e Impacto (prefabs destruídos ao fim das partículas), solta os filhos marcados e some; Vida máxima Capacidade necessária: `render.effects.projectile`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/).

Raio · radius

**Onde:** Inspector → **Projétil** → **Projétil** → **Raio**. **Uso e efeito:** Raio da esfera que testa o acerto contra os colisores da cena **Valor:** 0.1 · **Tipo:** número · **Unidade:** m · **Domínio:** 0 … 100. Em Play: avança pela frente com consulta esférica à física, cria Disparo e Impacto (prefabs destruídos ao fim das partículas), solta os filhos marcados e some; Vida máxima Capacidade necessária: `render.effects.projectile`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/).

Ativo · enabled

**Onde:** Inspector → **Projétil** → **Projétil** → **Ativo**. **Uso e efeito:** Desligado, o projétil para onde está **Valor:** verdadeiro · **Tipo:** booleano · **Domínio:** verdadeiro \| falso. Em Play: avança pela frente com consulta esférica à física, cria Disparo e Impacto (prefabs destruídos ao fim das partículas), solta os filhos marcados e some; Vida máxima Capacidade necessária: `render.effects.projectile`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/).

Frente · forward_axis

**Onde:** Inspector → **Projétil** → **Projétil** → **Frente**. **Uso e efeito:** +Z é a frente da Astra; −Z é a frente de um efeito importado da Unity **Valor:** +Z (Astra) · **Tipo:** enumeração · **Domínio:** +Z (Astra) \| −Z (Unity). Em Play: avança pela frente com consulta esférica à física, cria Disparo e Impacto (prefabs destruídos ao fim das partículas), solta os filhos marcados e some; Vida máxima Capacidade necessária: `render.effects.projectile`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/). ### Impacto | Propriedade | Tipo / unidade | Padrão | Domínio | |---|---|---|---| | [**Afastamento do impacto**](#field-hit-offset)
`hit_offset` | número · m | 0 | -10 … 10 | | [**Giro do impacto X**](#field-rotation-offset-x)
`rotation_offset_x` | número · ° | 0 | -360 … 360 | | [**Giro do impacto Y**](#field-rotation-offset-y)
`rotation_offset_y` | número · ° | 0 | -360 … 360 | | [**Giro do impacto Z**](#field-rotation-offset-z)
`rotation_offset_z` | número · ° | 0 | -360 … 360 | | [**Impacto virado para o atirador**](#field-face-shooter)
`face_shooter` | booleano | falso | verdadeiro \| falso |

Afastamento do impacto · hit_offset

**Onde:** Inspector → **Projétil** → **Impacto** → **Afastamento do impacto**. **Uso e efeito:** O impacto nasce esta distância para fora da superfície **Valor:** 0 · **Tipo:** número · **Unidade:** m · **Domínio:** -10 … 10. Em Play: avança pela frente com consulta esférica à física, cria Disparo e Impacto (prefabs destruídos ao fim das partículas), solta os filhos marcados e some; Vida máxima Capacidade necessária: `render.effects.projectile`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/).

Giro do impacto X · rotation_offset_x

**Onde:** Inspector → **Projétil** → **Impacto** → **Giro do impacto X**. **Uso e efeito:** Diferente de zero, o impacto usa este giro fixo **Valor:** 0 · **Tipo:** número · **Unidade:** ° · **Domínio:** -360 … 360. Em Play: avança pela frente com consulta esférica à física, cria Disparo e Impacto (prefabs destruídos ao fim das partículas), solta os filhos marcados e some; Vida máxima Capacidade necessária: `render.effects.projectile`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/).

Giro do impacto Y · rotation_offset_y

**Onde:** Inspector → **Projétil** → **Impacto** → **Giro do impacto Y**. **Uso e efeito:** Diferente de zero, o impacto usa este giro fixo **Valor:** 0 · **Tipo:** número · **Unidade:** ° · **Domínio:** -360 … 360. Em Play: avança pela frente com consulta esférica à física, cria Disparo e Impacto (prefabs destruídos ao fim das partículas), solta os filhos marcados e some; Vida máxima Capacidade necessária: `render.effects.projectile`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/).

Giro do impacto Z · rotation_offset_z

**Onde:** Inspector → **Projétil** → **Impacto** → **Giro do impacto Z**. **Uso e efeito:** Diferente de zero, o impacto usa este giro fixo **Valor:** 0 · **Tipo:** número · **Unidade:** ° · **Domínio:** -360 … 360. Em Play: avança pela frente com consulta esférica à física, cria Disparo e Impacto (prefabs destruídos ao fim das partículas), solta os filhos marcados e some; Vida máxima Capacidade necessária: `render.effects.projectile`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/).

Impacto virado para o atirador · face_shooter

**Onde:** Inspector → **Projétil** → **Impacto** → **Impacto virado para o atirador**. **Uso e efeito:** O impacto gira com o projétil (meia-volta); desligado, encara a superfície **Valor:** falso · **Tipo:** booleano · **Domínio:** verdadeiro \| falso. Em Play: avança pela frente com consulta esférica à física, cria Disparo e Impacto (prefabs destruídos ao fim das partículas), solta os filhos marcados e some; Vida máxima Capacidade necessária: `render.effects.projectile`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/). ### Ao acertar | Propriedade | Tipo / unidade | Padrão | Domínio | |---|---|---|---| | [**Soltar 1**](#field-detach-0)
`detach_0` | referência | Nenhum | qualquer objeto · abaixo deste objeto | | [**Soltar 2**](#field-detach-1)
`detach_1` | referência | Nenhum | qualquer objeto · abaixo deste objeto | | [**Soltar 3**](#field-detach-2)
`detach_2` | referência | Nenhum | qualquer objeto · abaixo deste objeto | | [**Soltar 4**](#field-detach-3)
`detach_3` | referência | Nenhum | qualquer objeto · abaixo deste objeto |

Soltar 1 · detach_0

**Onde:** Inspector → **Projétil** → **Ao acertar** → **Soltar 1**. **Uso e efeito:** Filho que fica na cena quando o projétil some (rastro, fumaça) **Valor:** Nenhum · **Tipo:** referência · **Domínio:** qualquer objeto · abaixo deste objeto. Em Play: avança pela frente com consulta esférica à física, cria Disparo e Impacto (prefabs destruídos ao fim das partículas), solta os filhos marcados e some; Vida máxima Capacidade necessária: `render.effects.projectile`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/).

Soltar 2 · detach_1

**Onde:** Inspector → **Projétil** → **Ao acertar** → **Soltar 2**. **Uso e efeito:** Filho que fica na cena quando o projétil some (rastro, fumaça) **Valor:** Nenhum · **Tipo:** referência · **Domínio:** qualquer objeto · abaixo deste objeto. Em Play: avança pela frente com consulta esférica à física, cria Disparo e Impacto (prefabs destruídos ao fim das partículas), solta os filhos marcados e some; Vida máxima Capacidade necessária: `render.effects.projectile`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/).

Soltar 3 · detach_2

**Onde:** Inspector → **Projétil** → **Ao acertar** → **Soltar 3**. **Uso e efeito:** Filho que fica na cena quando o projétil some (rastro, fumaça) **Valor:** Nenhum · **Tipo:** referência · **Domínio:** qualquer objeto · abaixo deste objeto. Em Play: avança pela frente com consulta esférica à física, cria Disparo e Impacto (prefabs destruídos ao fim das partículas), solta os filhos marcados e some; Vida máxima Capacidade necessária: `render.effects.projectile`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/).

Soltar 4 · detach_3

**Onde:** Inspector → **Projétil** → **Ao acertar** → **Soltar 4**. **Uso e efeito:** Filho que fica na cena quando o projétil some (rastro, fumaça) **Valor:** Nenhum · **Tipo:** referência · **Domínio:** qualquer objeto · abaixo deste objeto. Em Play: avança pela frente com consulta esférica à física, cria Disparo e Impacto (prefabs destruídos ao fim das partículas), solta os filhos marcados e some; Vida máxima Capacidade necessária: `render.effects.projectile`; veja [estado do renderer](/pt-br/snapshot-2026-10-06/roadmap/capacidades-do-renderer/). ## Roadmap deste componente [Objetos, Behaviors e composição](/pt-br/snapshot-2026-10-06/roadmap/objetos-e-scripts/). Presente na 0.4.0. Gravidade, ricochete e teleguiado não existem. 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 **Projétil** 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/ScriptReference/Collider.OnCollisionEnter.html). Essa referência não representa paridade funcional.