내일배움캠프 41일차 TIL - 파티클 시스템

권태하·2024년 6월 13일
0
post-thumbnail

파티클 시스템이란?

파티클 시스템은 수많은 2D 또는 3D오브젝트의 동작과 생애를 제어하는 시스템으로써, 게임 이펙트 생성에 주요한 역할을 한다. 이 때 생성되는 각각의 오브젝트들을 Particle이라고 부른다.

많은 컴포넌트가 있는데, 강의에서 주요 모듈로 설명한 4가지 모듈은

  • Main 모듈
  • Renderer 모듈
  • Shape 모듈
  • Emission 모듈이다

각 모듈을 간단하게 정리해보자면,

Main 모듈

파티클의 움직이는 속도, 크기, 회전, 최대 파티클 수를 정할 수 있다.
또한, 이러한 값들을 상수로 정하는게 아니라
Random Between Two Constant를 통해 정해진 값 안에서 무작위로 추출된 값을 쓸 수 있게 하므로, 파티클이 생성될 때마다 다양한 모습이 보여지게 된다.

Renderer 모듈

파티클을 어떻게 보여줄 지에 대해 정의한다. 별 모양 파티클, 마름모 모양 파티클 등을 정의할 수 있고, Order in Layer를 정해줄 수 있다.

Shape 모듈

생성되는 형태에 대한 내용을 정의한다. 박스, 콘, 도넛 형태 등 다양한 생성 형태를 정의한다.
생성되어 나아가는 각도도 정해줄 수 있다.

Emission 모듈

파티클이 생성될 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);
}
profile
스터디 로그

0개의 댓글

관련 채용 정보