유니티 파티클 시스템은 다음과 같은 다양한 모듈을 조합하여 구현된다.
이 중Particle System
, Emission
, Shape
, Renderer
는 기본적으로 활성화되어있는 모듈이다.
모든 모듈들에 대한 전역적인 변수들을 지니고 있다.
파티클의 분출 빈도를 설정한다.
Rate over Time
: 초당 생성되는 파티클의 수Rate Over Distance
: 단위거리(1f)당 생성되는 파티클의 수, 로켓 연기 등에 유용하게 사용Burst
: 한순간에 여러 파티클을 폭발하듯 생성해냄. 폭발 등에 유용하게 사용파티클이 분출되는 모양을 설정한다.
Shape
에서 원하는 형상을 설정할 수 있다.파티클의 모양을 결정한다.
Render Mode
와 Material
을 조합하여 파티클의 외견을 결정할 수 있다Particles/Standard Surface
을 기본적으로 추천한다파티클 입자 개개의 주기 내의 변화를 정의할 때 사용한다.
각 파티클의 시간당 크기 변화를 정의할 때 사용
각 파티클의 시간당 색변화를 정의할 때 사용
각 파티클에 가해지는 가속도를 정의할 때 사용
Velocity over Lifetime
과 정 반대의 일을 하며 각 파티클에 감속을 걸어줄 때 사용
폭발에서 불똥이 튕기다가 힘을 잃고 떨어지는 등의 효과에 주로 적용됨
파티클의 현재 속도(Speed)에 따라 값을 달라지게 할 때 사용한다.
Color by Speed
, Size by Speed
, Rotation by Speed
로 색, 크기, 회전 등을 변화시킬 수 있다.파티클에 펄린 노이즈를 이용해 무작위성을 부여해주는 모듈이다.
Strength
로 무작위성의 강도를, Frequency
로 무작위성의 빈도를 늘린다.Scroll Speed
로 펄린 노이즈의 상태를 매시간마다 변화시켜 무작위성을 늘릴 수 있다.Octaves
로 펄린 노이즈의 층을 늘려 무작위성의 깊이를 조절할 수 있다.Amount
로 펄린 노이즈가 영향을 끼치는 요소들을 정할 수 있다.파티클 요소들이 다른 게임 오브젝트들과 물리적인 상호작용을 할 수 있게 해주는 모듈이다.
주로 튕기는 불티 등을 표현할 때 사용한다.
Type
는 World
와 Plane
이 있는데, World
로 할 시 모든 오브젝트에 대해 물리작용이 일어나고, Plane
으로 할 시 미리 설정한 특정 평면 콜리전에만 물리적 상호작용을 실시한다.Dampen
과 Bounce
로 충돌 시 속도와 반사율을 조절할 수 있다.파티클 내애 또 다른 파티클을 추가하는 모듈이다.
불꽃놀이 혹은 빗방울이 떨어져 수면에서 튕기는 효과 등을 연출할 때 유용하게 사용된다.
효과를 애니메이팅하고 싶을 때 사용한다.
2D 게임 내에서 구름이나 불꽃 등을 표현할 때 사용할 수 있다.
Grid
혹은 Sprite
를 불러와 가져온 이미지들을 이용해 스프라이트 애니메이션을 실행해준다각 파티클에 광원을 부여해줄 때 사용한다.
파티클의 자식 오브젝트로 라이트를 생성한 후 해당 파티클의 Lights
모듈에 추가해준다.
각 파티클의 꼬리를 만들 때 사용한다.
트레일을 표현하기 위해서는 Trail Material
이 필요하고,이는 Renderer
모듈에서 선언할 수 있다.
각 파티클이 특정 이벤트를 트리거하게 할 수 있다.
파티클 모체가 움직이는 순간에 대한 가속도를 각 파티클 입자에 전달해준다.
파티클 모체가 계속 움직이고, 각 입자들이 그 모체의 움직임에 대한 가속도를 얻고 싶을 때 사용한다.
Multiplier
를 이용해 모체의 가속도를 입자들이 얼만큼 받을지 정할 수 있다.파티클이 바람 등 외부의 힘에 영향을 받아야 할 때 사용한다.
파티클 내에 임의의 데이터를 추가한다.
추가한 데이터는 쉐이더 내에서 사용할 수 있다.
"GameObject" 메뉴로 이동하여 "Particle System"을 선택하거나 하이어라키에서 마우스 오른쪽 버튼으로 클릭하고 "Particle System"을 선택하여 새 파티클 만든다. 이렇게 하면 기본 설정으로 장면에 파티클 개체가 생성된다.
필요에 맞게 파티클 시스템의 설정을 조정한다. 파티클의 크기, 모양, 색상, 수명, 방출 속도 및 속도 등을 조정할 수 있다. 파티클 텍스처를 선택하고 충돌 감지를 설정할 수도 있다.
파티클 시스템을 오브젝트에 추가하려면 파티클 시스템 오브젝트를 하위로 만들려는 오브젝트로 드래그 앤 드롭하기만 하면 된다.
파티클 시스템을 재생하려면 파티클 시스템 개체에서 Play() 함수를 호출하거나 파티클 시스템의 "Play on Awake" 설정을 사용할 수 있다.
파티클 시스템을 중지하려면 파티클 시스템 개체에서 Stop() 함수를 호출하면 된다.
시간 경과에 따라 파티클 시스템을 제어하려면 파티클 시스템의 "Emission" 모듈을 사용하여 시간 경과에 따라 파티클이 방출되는 속도를 제어할 수 있다.
파티클의 수명 동안 파티클 시스템을 제어하려면 파티클 시스템의 "Color over Lifetime" 모듈을 사용하여 파티클의 수명 동안 파티클 색상을 제어할 수 있다.
파티클 시스템의 속도를 제어하려면 파티클 시스템의 "Size over Lifetime" 모듈을 사용하여 파티클의 수명 동안 파티클 크기를 제어할 수 있다.
모양에 대한 파티클 시스템을 제어하려면 파티클 이미터의 모양과 위치를 제어할 수 있는 파티클 시스템의 "모양" 모듈을 사용할 수 있다. 구, 원뿔 및 상자와 같은 다양한 모양 중에서 선택하고 방사체의 위치, 회전 및 배율을 조정할 수 있다.
더 복잡한 파티클 시스템을 만들려면 상위 파티클 시스템 내에 중첩된 파티클 시스템을 만들 수 있는 "Sub-Emitters" 모듈을 사용할 수 있다. 이것은 메인 파티클 시스템에서 방사되는 스파크나 잔해 같은 것을 만드는 데 사용할 수 있다.
파티클 시스템에 시각 효과를 추가하려면 파티클가 렌더링되는 방식을 제어할 수 있는 "Renderer" 모듈을 사용할 수 있다. 다양한 재료와 조명 옵션 중에서 선택하여 다양한 시각 효과를 만들 수 있다.
사실적인 파티클 시스템을 만들기 위해 "충돌" 모듈을 사용하면 장면에서 파티클와 다른 개체 간의 충돌을 감지할 수 있다. 이를 사용하여 환경과 충돌하는 폭발이나 불꽃 같은 것을 만들 수 있다.
물리학과 상호 작용하는 파티클 시스템을 만들려면 중력이나 바람과 같은 힘을 파티클에 적용할 수 있는 "Force" 모듈을 사용할 수 있다. "Trail" 모듈을 사용하여 파티클 뒤에 트레일을 만들어 연기나 불 같은 것을 시뮬레이션할 수도 있다.
ParticleSystem particleSystem = Instantiate(particleSystemPrefab);
particleSystem.startColor = Color.red;
particleSystem.startSize = 0.5f;
particleSystem.emissionRate = 10;
particleSystem.Play();
particleSystem.Stop();
particleSystem.emission.rateOverTime = new ParticleSystem.MinMaxCurve(5, 10);
particleSystem.colorOverLifetime.color =
new ParticleSystem.MinMaxGradient(Color.red, Color.yellow);
particleSystem.sizeOverLifetime = new ParticleSystem.MinMaxCurve(0.5f, 1.5f);
particleSystem.shape.shapeType = ParticleSystemShapeType.Sphere;
particleSystem.shape.radius = 0.5f;