O que são Partículas/VFX e por que usar Niagara como feedback
VFX (efeitos visuais) são sinais rápidos para o jogador entender que uma ação aconteceu: coletou um item, ativou um checkpoint, falhou uma interação, etc. Em vez de depender só de UI ou som, um efeito de partículas reforça a resposta no próprio mundo 3D.
No Unreal, o sistema moderno de partículas é o Niagara. Você cria um Niagara System (o “efeito completo”) e o instancia no jogo quando um evento ocorre. Para iniciantes, o foco é: (1) escolher/criar um sistema simples (sparkle/poof), (2) fazer spawn no lugar certo ou anexar em um componente, e (3) controlar o tempo de vida para não acumular efeitos.
Preparando um Niagara System simples (sparkle/poof)
Opção A: usar um sistema pronto (mais rápido)
- No Content Browser, clique com o botão direito > FX > Niagara System.
- Escolha um template simples (por exemplo, um burst/poof). Se não houver templates visíveis, use um sistema de exemplo do projeto (Starter Content/FX, se disponível) ou crie um sistema vazio e adicione um emitter básico.
- Nomeie de forma clara, por exemplo:
NS_Poof_SuccesseNS_Spark_Fail.
Opção B: criar um “poof” básico (conceito do que ajustar)
Mesmo usando templates, é importante saber quais parâmetros dão o “feeling” de poof/sparkle:
- Spawn Burst: emite muitas partículas de uma vez (sensação de explosão curta).
- Lifetime: curto (ex.: 0.3–1.0s) para feedback rápido.
- Color/Scale: cor e tamanho coerentes com sucesso/falha.
- Velocity: leve expansão para fora (poof) ou subida (sparkle).
- Renderer: Sprite renderer costuma ser suficiente para efeitos simples.
Meta: um efeito que “aparece e some” rapidamente, sem precisar de loop.
Instanciando Niagara no mundo: Spawn at Location
O caso mais comum é criar o efeito no ponto do evento (coleta, checkpoint, impacto). Para isso, use o nó de Blueprint que cria um componente Niagara temporário no mundo.
- Ouça o áudio com a tela desligada
- Ganhe Certificado após a conclusão
- + de 5000 cursos para você explorar!
Baixar o aplicativo
Passo a passo: efeito ao coletar um item
Suponha que você já tem um Blueprint de item coletável com um evento de coleta (por exemplo, quando o jogador interage ou sobrepõe). Você vai adicionar o VFX nesse mesmo ponto.
- Crie uma variável do tipo Niagara System no Blueprint do item:
VFX_OnCollect. - No Details dessa variável, marque como Instance Editable (para escolher o sistema por instância no nível, se quiser).
- No ponto do evento de coleta, adicione o nó:
Spawn System at Location(Niagara). - Em
System Template, conecteVFX_OnCollect(ou selecione diretamente umNS_...). - Em
Location, use a posição do item (ex.:GetActorLocation) ou um componente específico (ex.: mesh). - Em
Rotation, geralmente pode serGetActorRotationou zero.
Isso cria o efeito no mundo e ele se auto-destrói quando termina, desde que o sistema não esteja em loop.
Dica prática: offset para não “enterrar” o efeito
Se o efeito estiver aparecendo dentro do chão, some um pequeno offset no Z:
Location = GetActorLocation + (0, 0, 20)Anexando o VFX a um componente: Spawn System Attached
Quando o efeito deve “seguir” algo (mão do personagem, um checkpoint com animação, um objeto que se move), prefira anexar ao componente.
Passo a passo: efeito ao ativar checkpoint (anexado ao mesh do checkpoint)
- No Blueprint do checkpoint, identifique o componente que representa o ponto visual (ex.:
StaticMeshouScene). - Crie uma variável Niagara System:
VFX_OnActivate. - No evento de ativação do checkpoint, use:
Spawn System Attached(Niagara). - Em
Attach to Component, selecione o componente do checkpoint (ex.:StaticMesh). - Defina
Location Typecomo Keep Relative (se você quer um offset fixo) ou Snap to Target (se quer colar no pivot). - Ajuste
Relative Location(ex.: Z + 50) para o efeito ficar acima do checkpoint.
Esse método é ideal para efeitos que precisam acompanhar o objeto durante a curta duração do VFX.
Controle de tempo de vida: evitando VFX infinitos e acúmulo
Existem dois “tempos de vida” importantes: (1) o tempo de vida das partículas dentro do Niagara e (2) o tempo de vida do componente Niagara instanciado no mundo.
1) Garantir que o Niagara System não esteja em loop
- Abra o Niagara System e verifique se o emitter está configurado para não ficar emitindo continuamente.
- Para feedback de ação, prefira Burst e duração curta.
2) Auto-destruição do componente instanciado
Os nós de spawn geralmente possuem opções para auto-destruir quando terminar. Se você estiver guardando referência do componente retornado, pode controlar explicitamente.
Exemplo de fluxo comum:
Spawn System at Locationretorna um Niagara Component.- Guarde em uma variável local/temporária se precisar controlar depois.
- Se necessário, chame
Deactivatee depoisDestroy Component(ou use umSet Life Spanem um ator auxiliar, se você estiver encapsulando o VFX em um Actor).
Quando faz sentido controlar manualmente
- Efeitos que podem ser interrompidos (ex.: canalização, carregamento, “interagindo…”).
- Efeitos anexados que podem persistir enquanto uma condição for verdadeira.
Boas práticas rápidas para VFX de gameplay
- Padronize nomes:
NS_para systems,NE_para emitters (se usar), e variáveis comoVFX_On.... - Exponha variáveis para trocar o VFX por instância (um mesmo Blueprint com efeitos diferentes).
- Evite spawn em Tick: VFX de feedback deve nascer em eventos, não continuamente.
- Consistência visual: sucesso e falha devem ser distinguíveis (cor, forma, intensidade, duração).
Exercício: VFX diferente para sucesso/falha com Branch
Objetivo: ao tentar interagir com algo, disparar um VFX de sucesso se a interação for válida e um VFX de falha se não for.
Setup
- Tenha dois Niagara Systems:
NS_Success_Poof(ex.: verde/dourado) eNS_Fail_Spark(ex.: vermelho/azulado). - No Blueprint do objeto interagível (ou no controlador da interação), crie duas variáveis do tipo Niagara System:
VFX_SuccesseVFX_Fail.
Lógica do exercício (passo a passo)
- No ponto onde você decide se a interação é válida, tenha um booleano, por exemplo:
bCanInteract(ou o resultado de uma checagem). - Use um nó
BranchcombCanInteractcomo condição. - No pino True (sucesso): chame
Spawn System at LocationcomVFX_Success. - No pino False (falha): chame
Spawn System at LocationcomVFX_Fail. - Para o
Location, escolha um ponto coerente:- Se for um objeto no mundo:
GetActorLocationdo objeto. - Se for um ponto de interação: a localização de um componente “InteractionPoint” (Scene Component) para centralizar o feedback.
- Se for um objeto no mundo:
Variação (extra): anexar o VFX de falha ao jogador
Se a falha for “do jogador” (ex.: sem chave, sem energia), você pode anexar o VFX no personagem:
- No pino False, use
Spawn System Attachedno componente do personagem (ex.: mesh ou um Scene Component na frente da câmera). - Use um offset pequeno para aparecer perto da mão/câmera sem bloquear a visão.
Checklist de validação do exercício
| Item | O que verificar |
|---|---|
| Sucesso dispara | Ao interagir corretamente, o VFX aparece no local certo e some rápido |
| Falha dispara | Ao interagir sem condição, o VFX de falha aparece e não fica em loop |
| Sem acúmulo | Repetir interações não deixa componentes “pendurados” nem queda perceptível de performance |
| Leitura clara | Mesmo sem UI, dá para diferenciar sucesso vs falha só pelo VFX |