파티클 시스템은 수많은 2D 또는 3D오브젝트의 동작과 생애를 제어하는 시스템으로써, 게임 이펙트 생성에 주요한 역할을 한다. 이 때 생성되는 각각의 오브젝트들을 Particle이라고 부른다.
많은 컴포넌트가 있는데, 강의에서 주요 모듈로 설명한 4가지 모듈은
각 모듈을 간단하게 정리해보자면,
파티클의 움직이는 속도, 크기, 회전, 최대 파티클 수를 정할 수 있다.
또한, 이러한 값들을 상수로 정하는게 아니라
Random Between Two Constant를 통해 정해진 값 안에서 무작위로 추출된 값을 쓸 수 있게 하므로, 파티클이 생성될 때마다 다양한 모습이 보여지게 된다.
파티클을 어떻게 보여줄 지에 대해 정의한다. 별 모양 파티클, 마름모 모양 파티클 등을 정의할 수 있고, Order in Layer를 정해줄 수 있다.
생성되는 형태에 대한 내용을 정의한다. 박스, 콘, 도넛 형태 등 다양한 생성 형태를 정의한다.
생성되어 나아가는 각도도 정해줄 수 있다.
파티클이 생성될 1초당 생성량, 움직일 때 생성될 양, 한 번에 왕창 생성되는 패턴(Burst: 양, 시간, 간격) 등을 설정할 수 있다.
강의에서는 이 부분을 스크립트로 컨트롤 해서 화살이 없어질 때 파티클이 Burst로 생성되게 설정하였다.
private void DestroyProjectile(Vector3 position, bool createFx)
{
if (createFx)
{
ParticleSystem particleSystem = GameManager.Instance.EffectParticle;
particleSystem.transform.position = position;
ParticleSystem.EmissionModule em = particleSystem.emission; // 파티클 시스템 위치 변경
em.SetBurst(0, new ParticleSystem.Burst(0, Mathf.Ceil(attackData.size * 5)));
ParticleSystem.MainModule mainModule = particleSystem.main;
mainModule.startSpeedMultiplier = attackData.size * 10f;
particleSystem.Play();
}
gameObject.SetActive(false);
}