파티클 시스템(Particle System)








파티클 시스템은

씬 안에 다수의 작은 2D 이미지를 생성하고 애니메이션하여 액체, 구름 및 불 꽃 같은 유체 엔티티를 시물레이션 한다

3D게임에서 대부분의 캐릭터, 소품 및 풍경 요소는 Meshes로 표현되고, 2D는 Sprite를 이러한 용도로 사용한다.


형태가 표현이 가능한 Meshe와 Sprite


<3D> 


<2D>


Mesh와 Sprite는 형태가 뚜렷한 "솔리드"오브젝트를 그리는 가장 이상적인 방법이다.

하지만 Mesh와 Sprite로 표현하기 어려운 것들이 있다.


예를들어 모닥불에 피어 오르는 연기, 총구에 나오는 화염, 리얼하게 표현 되어야 할 마법스킬등 

정해진 물체에 그리는것처럼 형태가 없기 때문에 표현하기는 불가능한 것들이다.


이런것들은 파티클이라는 그래픽스방식을 이용해야 한다.

(그래픽스? : 실시간으로 이루어지는 유동적인 효과를 나타낼때 사용)


파티클 단어 자체가 작은 입자라는 뜻인데 이런 작은 입자(작은 메시와,sprite)가 모여 

큰 모양을 만들어 표현하기 어려운 것들을 보다 자연스럽게 표현한다고 생각하면 된다.



파티클 컴포넌트

Duration : 파티클이 실행되는 시간

Looping : 반복 여부

Start Delay : 파티클시스템이 기다리는 시간, 값이 높을 수록 늦게 시작

Start LifeTime : 파티클의 수명




방사 모듈<Emission Module>

시간의 경과에 따라 방사되는 파티클의 양이나 거리

Bursts : 파티클의 용출 횟수를 조절한다.


<기본>

<1개 추가함>




형태 모듈<Shape Module>

Shape : 파티클 형태를 선택할 수 있다.

<Edge형태>




충돌 모듈<Collision Forces>

파티클 충돌처리

World / Planes : World와 Planes 선택가능


<Planes>형태 

게임의 바닥을 Planes으로 지정했을 경우 cube를 무시하고 파티클이 재생된다.

<world>형태

cube등 주위 오브젝트를 감지하여 불꽃이 빚겨나간다.


Send Collision Messages : 충돌처리에 대한 메세지를 받을 수 있다.

   void OnParticleCollision(GameObject other)

    { 

        Debug.Log("파티클 충돌");

    }

파티클을 체크하고 충돌 메세지를 받을 오브젝트에 스크립트를 추가한다.



추가적인 내용은 유니티 도큐먼트를 참고

https://docs.unity3d.com/kr/2017.4/Manual/PartSysMainModule.html

https://docs.unity3d.com/kr/2017.4/Manual/class-ParticleSystem.html

반응형

+ Recent posts