Unity3D/Script
Invert ParticleEffect Velocity
blueasa
2016. 11. 9. 13:16
파티클 이펙트를 런타임 중에 방향을 반전 시키는 간단한 스크립트.
생성 될 때 방향을 반전시키기 위해서 ParticleSystem.startSpeed 를 반전 시키고,
이미 생성 된 파티클은 ParticleSystem.Particle.velocity 를 반전 시켜 줌.
using UnityEngine; using System.Collections; public class InvertParticleEffect : MonoBehaviour { ParticleSystem m_System; ParticleSystem.Particle[] m_Particles; void InitializeIfNeeded() { if (m_System == null) m_System = GetComponent(); if (m_Particles == null || m_Particles.Length < m_System.maxParticles) m_Particles = new ParticleSystem.Particle[m_System.maxParticles]; } public void Invert() { InitializeIfNeeded(); // 생성될 때, 파티클 Speed 방향 반전 var vel = m_System.startSpeed *= -1f; // GetParticles is allocation free because we reuse the m_Particles buffer between updates int numParticlesAlive = m_System.GetParticles(m_Particles); // Change only the particles that are alive for (int i = 0; i < numParticlesAlive; i++) { // 이미 생성된 파티클은 velocity 반전해서 반대로 가도록.. m_Particles[i].velocity *= -1f; } // Apply the particle changes to the particle system m_System.SetParticles(m_Particles, numParticlesAlive); } }
반응형