Download - Sistema de Partículas
Sistema de Partículas
1º Semestre 2010 > PUCPR > Pós Jogos
Bruno C. de PaulaBruno C. de Paula
ResumoHoje vamos entender o sistema de
partículas do Unity 3D;Vamos trabalhar com os componentes:
Ellipsoid Particle Emitter;Mesh Particle Emitter;Particle Animator;Particle Renderer;Trail Renderer;World Particle Collider.
Sistema de PartículasConjunto de componentes dedicado à:
Emissão (Particle Emitter);Animação (Particle Animator);Renderização de objetos de partícula
(Particle Renderer);
320/04/23
Partículas são diferentes dos objetos normais!Vem em grupos de centenas
ou milhares;Possuem movimentação com
aspectos aleatórios (fuzzy); Lidam com colisão
simplificada ou inexistente;São construídos para ter vida
curta;Essenciais para efeitos
realistas.
420/04/23
Uso de partículasFogo, explosões, faíscas, água corrente,
neve, cabelo, magias, spray, rastros, fumaça, vapor, galáxias, etc.
520/04/23
Prefabs de partículas prontos620/04/23
Particle EmitterEmissor de PartículasLocal que as partículas são emitidas;Tipos:
Ellipsoid Particle Emitter: geração em área de uma esfera (elipsóide, na verdade...);
Mesh Particle Emitter: geração em área de uma mesh (malha).
720/04/23
Ellipsoid Particle EmitterEmissor dentro de “esfera”Mais comum;Usado para fumaça, vapor,
etc;Possui propriedades de:
Tamanho;Energia (duração da vida);Emissão (num partículas);Velocidade inicial.
Não usar partículas muito grandes (performance)!
820/04/23
Ellipsoid Particle EmitterPropriedadesMin / Max Size: tamanho em metros;Min / Max Energy: quantos segundos até
desaparecer;Min / Max Emission: número de partículas
por segundo;World / Local Velocity: velocidade inicial
nas coordenadas do mundo e local;Rnd Velocity: velocidade inicial aleatória;Emmiter Velocity Scale: velocidade que
é herdada do emissor se estiver se movendo;
920/04/23
Ellipsoid Particle EmitterPropriedades Tangent Velocity: velocidade inicial em X, Y e
Z em relação à superfície do emissor; Simulate in Worldspace: Se não, movem-se
quando o emissor se move; One Shot: gera as partículas de uma vez,
explosão, magia, etc; Ellipsoid: determina a área de criação das
partículas; Min Emitter Range: espaço dentro da
elipsóide no qual não são criadas partículas. Quanto maior, mais distante é a criação do centro.
1020/04/23
Mesh Particle EmitterEmissor dentro de malha Emissão de partículas seguindo a superfície
de uma mesh; Permitem interação com objetos complexos; Também possui propriedades de:
Tamanho;Energia (duração da vida);Emissão (num partículas);Velocidade inicial.
Útil para efeitos de glow (brilho) em lâmpadas;
Passos para criação;
1120/04/23
Mesh Particle EmitterPropriedades Interpolate Triangles:
Sim: Partículas emitidas na superfície;Não: Partículas emitidas nos vértices;
1220/04/23
Interpolate = on Interpolate = off
Mesh Particle EmitterPropriedadesSystematic:
Geração das partículas na ordem dos vértices do modelo;
1320/04/23
Particle AnimatorAnimador de PartículasMove / transforma /
anima as partículas conforme o tempo passa;
Determina características individuais de uma partícula;
Mudança de:Cor, rotação, tamanho,
aceleração;
1420/04/23
Particle AnimatorPropriedadesDoes Animate Color: partículas
trocam de cor em seu ciclo de vida;Color Animation (0 a 4): Todas as
cores pelas quais a partícula passa, usar degradê para fade;
World / Local Rotation Axis: rotação da partícula, útil em magias e bolhas;
Size Grow: Controla o crescimento das partículas durante a vida, útil em fumaça;
1520/04/23
Particle AnimatorPropriedadesRnd Force: força aleatória aplicada a
cada frame;Força: força constante aplicada a cada
frame;Auto Destruct: destrói o game object
associado ao particle animator quando as partículas desaparecerem, útil para explosões;
1620/04/23
Particle AnimatorDampingDamping: diminuição da velocidade a
cada frame;Entre 0 e 1: diminui velocidade;1: Sem aceleração / desaceleração;2: Velocidade dobra a cada segundo;
1720/04/23
Damping<1 Damping=1 Damping > 1
Particle RendererRenderizador de PartículasNecessário para exibir as
partículas no ambiente;Na prática, partículas
são sprites quadrados com transparência (gráficos 2D);
Pode ser animada;Pode usar billboarding;Partes pretas do
material são transparentes.
1820/04/23
Particle RendererPropriedades
Materials: textura usada em cada uma das partículas;Ver pasta Standard
Assets > Particles > Sources;
Criar material novo em Assets > Create Other > Material.
1920/04/23
Particle RendererPropriedades Camera Velocity Scale: Quantidade que a
partícula é esticada conforme o movimento da câmera, útil para efeito de faísca;
Strech Particles: determina o modo de renderização:Billboard: virados em direção à câmera;Stretch: virada na direção do movimento;Sorted Billboard: ordenadas pela
profundidade (caro);Vertical / Horizontal: alinhamento em X/Z
ou X/Y.
2020/04/23
Particle RendererPropriedadesLength Scale (se stretch): determina
quanto estica na direção do movimento;Velocity Scale (se strech): determina
a taxa que as particulas são esticadas;UV Animation: permite a definição de
uma textura animada a partir de um sprite formato por X Tiles de largura e Y Tiles de Altura. Cycles determina o número de loops da animação;
2120/04/23
Trail RendererRenderizador de rastroPermite a criação de rastros e
trajetórias atrás de objetos, conforme eles se movem;
2220/04/23
Trail RendererPropriedades Materials: textura utilizada; Time: duração do rastro em segundos; Start / End Width: tamanho inicial e final do
rastro; Colors (0 a 4): Cores aplicadas do início ao
fim do rastro; Min Vertex Distance: determina quanto o
objeto deve ir antes de um segmento seja solidificado. Quanto menor, o rastro é mais suave;
Auto Destruct: destrói o objeto associado ao rastro depois do tempo.
2320/04/23
World Particle ColliderColisor de partículasUsado para colidir as partículas com
outros objetos em cena;Caro computacionalmente;Ao colidir, a mensagem enviada ao
Particle Collider é OnParticleCollision.
2420/04/23
World Particle ColliderPropriedadesBounce Factor: Partículas aceleram ou
freiam quando colidem com outros objetos;Collision Energy Loss: perda de vida em
segundos que a partícula perde quando colide;
Min Kill Velocity: Se a velocidade ficar menor que o mínimo ela é eliminada;
Collides With: com quais layers colide;Send Collision Message: cada partícula
envia uma mensagem de colisão individualmente.
2520/04/23
ScriptAplicar uma força quando colide
2620/04/23
function OnParticleCollision(obj : GameObject) {
var body = obj.rigidbody; // Só aplica se o corpo for corpo rígido if(body) { Debug.Log("colidiu com: " + obj.name); // Obtém a direção var direcao = obj.transform.position - transform.position; direcao = direcao.normalized; // Aplica uma força body.AddForce( direcao * 5); }}
ScriptLigar e desligar a emissãoTratar a propriedade emit do
ParticleEmitter;
2720/04/23
function Update () { var emissor : ParticleEmitter = GetComponent(ParticleEmitter); // Tecla espaço liga e desliga a fogueira if(Input.GetKeyDown("space")) { emissor.emit = ! emissor.emit; }}
Script Alterar propriedades do sistema de partículas
2820/04/23
function Update () { var animator : ParticleAnimator = GetComponent(ParticleAnimator); if(Input.GetKeyDown("g")) { animator.sizeGrow = animator.sizeGrow * 2; } if(Input.GetKeyDown("h")) { animator.sizeGrow = animator.sizeGrow / 2; }}
Script TimedObjectDestructor.jsÚtil para destruir objetos após certo
tempo;
2920/04/23
var timeOut = 1.0;var detachChildren = false;
function Awake (){ Invoke ("DestroyNow", timeOut);}
function DestroyNow (){ if (detachChildren) { transform.DetachChildren (); } DestroyObject (gameObject);}