유니티 파티클 시스템

정선호·2023년 6월 20일
0

Unity Features

목록 보기
5/28

참고 영상

파티클 시스템
파티클 시스템 모듈

파티클 시스템

유니티 파티클 시스템은 다음과 같은 다양한 모듈을 조합하여 구현된다.

이 중Particle System, Emission, Shape, Renderer는 기본적으로 활성화되어있는 모듈이다.


Particle System

모든 모듈들에 대한 전역적인 변수들을 지니고 있다.

  • 파티클의 주기, 반복 여부, 시작 딜레이, 파티클의 수명, 파티클 색 등 기초적이고 다양한 설정을 할 수 있다.
  • 최솟값-최댓값을 설정해 그 사이의 랜덤값을 이용하게 할 수 있다.
  • 값의 커브를 설정해 시간마다 값을 일정하게 변화시킬 수 있다.
  • 파티클에 중력을 적용하거나 파티클의 시뮬레이션 위치를 설정할 수 있다.

Emission

파티클의 분출 빈도를 설정한다.

  • Rate over Time : 초당 생성되는 파티클의 수
  • Rate Over Distance : 단위거리(1f)당 생성되는 파티클의 수, 로켓 연기 등에 유용하게 사용
  • Burst : 한순간에 여러 파티클을 폭발하듯 생성해냄. 폭발 등에 유용하게 사용

Shape

파티클이 분출되는 모양을 설정한다.

  • Shape에서 원하는 형상을 설정할 수 있다.
  • 이외에는 형상의 모양, 형상 내 파티클이 생성되는 위치 등을 설정할 수 있다.

Renderer

파티클의 모양을 결정한다.

  • Render ModeMaterial을 조합하여 파티클의 외견을 결정할 수 있다
  • 머터리얼의 쉐이더를 이용해 추가로 외견을 조정할 수 있다.
    • 3D 파티클을 사용할 때에는 Particles/Standard Surface을 기본적으로 추천한다

over Lifetime Module

파티클 입자 개개의 주기 내의 변화를 정의할 때 사용한다.

Size over Lifetime

각 파티클의 시간당 크기 변화를 정의할 때 사용

Color over Lifetime

각 파티클의 시간당 색변화를 정의할 때 사용

Velocity over Lifetime

각 파티클에 가해지는 가속도를 정의할 때 사용

Limit Velocity over Lifetime

Velocity over Lifetime과 정 반대의 일을 하며 각 파티클에 감속을 걸어줄 때 사용
폭발에서 불똥이 튕기다가 힘을 잃고 떨어지는 등의 효과에 주로 적용됨


by Speed Module

파티클의 현재 속도(Speed)에 따라 값을 달라지게 할 때 사용한다.

  • Color by Speed, Size by Speed, Rotation by Speed로 색, 크기, 회전 등을 변화시킬 수 있다.

Noise

파티클에 펄린 노이즈를 이용해 무작위성을 부여해주는 모듈이다.

  • Strength로 무작위성의 강도를, Frequency로 무작위성의 빈도를 늘린다.
  • Scroll Speed로 펄린 노이즈의 상태를 매시간마다 변화시켜 무작위성을 늘릴 수 있다.
  • Octaves로 펄린 노이즈의 층을 늘려 무작위성의 깊이를 조절할 수 있다.
  • 아래쪽의 Amount로 펄린 노이즈가 영향을 끼치는 요소들을 정할 수 있다.

Collision

파티클 요소들이 다른 게임 오브젝트들과 물리적인 상호작용을 할 수 있게 해주는 모듈이다.
주로 튕기는 불티 등을 표현할 때 사용한다.

  • TypeWorldPlane이 있는데, World로 할 시 모든 오브젝트에 대해 물리작용이 일어나고, Plane으로 할 시 미리 설정한 특정 평면 콜리전에만 물리적 상호작용을 실시한다.
  • DampenBounce로 충돌 시 속도와 반사율을 조절할 수 있다.

Sub Emitter

파티클 내애 또 다른 파티클을 추가하는 모듈이다.
불꽃놀이 혹은 빗방울이 떨어져 수면에서 튕기는 효과 등을 연출할 때 유용하게 사용된다.


Texture Sheet Animation

효과를 애니메이팅하고 싶을 때 사용한다.
2D 게임 내에서 구름이나 불꽃 등을 표현할 때 사용할 수 있다.

  • Grid 혹은 Sprite를 불러와 가져온 이미지들을 이용해 스프라이트 애니메이션을 실행해준다

Lights

각 파티클에 광원을 부여해줄 때 사용한다.
파티클의 자식 오브젝트로 라이트를 생성한 후 해당 파티클의 Lights모듈에 추가해준다.


Trails

각 파티클의 꼬리를 만들 때 사용한다.
트레일을 표현하기 위해서는 Trail Material이 필요하고,이는 Renderer모듈에서 선언할 수 있다.


Triggers

각 파티클이 특정 이벤트를 트리거하게 할 수 있다.

  • 파티클이 안에 있을 때, 밖에 있을 때, 닿을 때, 빠져나갈 때에 대한 이벤트를 설정할 수 있다.
  • 기본적으로는 파티클 Kill 명령이 닿을 때 실행되게 선언되어 있지만, 스크립트를 작성해서 원하는 이벤트가 발생하게 할 수 있다.

Inherit Velocity

파티클 모체가 움직이는 순간에 대한 가속도를 각 파티클 입자에 전달해준다.
파티클 모체가 계속 움직이고, 각 입자들이 그 모체의 움직임에 대한 가속도를 얻고 싶을 때 사용한다.

  • Multiplier를 이용해 모체의 가속도를 입자들이 얼만큼 받을지 정할 수 있다.

External Forces

파티클이 바람 등 외부의 힘에 영향을 받아야 할 때 사용한다.


Custom Data

파티클 내에 임의의 데이터를 추가한다.
추가한 데이터는 쉐이더 내에서 사용할 수 있다.



파티클 시스템 사용

사용 워크플로우

  1. "GameObject" 메뉴로 이동하여 "Particle System"을 선택하거나 하이어라키에서 마우스 오른쪽 버튼으로 클릭하고 "Particle System"을 선택하여 새 파티클 만든다. 이렇게 하면 기본 설정으로 장면에 파티클 개체가 생성된다.

  2. 필요에 맞게 파티클 시스템의 설정을 조정한다. 파티클의 크기, 모양, 색상, 수명, 방출 속도 및 속도 등을 조정할 수 있다. 파티클 텍스처를 선택하고 충돌 감지를 설정할 수도 있다.

  3. 파티클 시스템을 오브젝트에 추가하려면 파티클 시스템 오브젝트를 하위로 만들려는 오브젝트로 드래그 앤 드롭하기만 하면 된다.

  4. 파티클 시스템을 재생하려면 파티클 시스템 개체에서 Play() 함수를 호출하거나 파티클 시스템의 "Play on Awake" 설정을 사용할 수 있다.

  5. 파티클 시스템을 중지하려면 파티클 시스템 개체에서 Stop() 함수를 호출하면 된다.

  6. 시간 경과에 따라 파티클 시스템을 제어하려면 파티클 시스템의 "Emission" 모듈을 사용하여 시간 경과에 따라 파티클이 방출되는 속도를 제어할 수 있다.

  7. 파티클의 수명 동안 파티클 시스템을 제어하려면 파티클 시스템의 "Color over Lifetime" 모듈을 사용하여 파티클의 수명 동안 파티클 색상을 제어할 수 있다.

  8. 파티클 시스템의 속도를 제어하려면 파티클 시스템의 "Size over Lifetime" 모듈을 사용하여 파티클의 수명 동안 파티클 크기를 제어할 수 있다.

  9. 모양에 대한 파티클 시스템을 제어하려면 파티클 이미터의 모양과 위치를 제어할 수 있는 파티클 시스템의 "모양" 모듈을 사용할 수 있다. 구, 원뿔 및 상자와 같은 다양한 모양 중에서 선택하고 방사체의 위치, 회전 및 배율을 조정할 수 있다.

  10. 더 복잡한 파티클 시스템을 만들려면 상위 파티클 시스템 내에 중첩된 파티클 시스템을 만들 수 있는 "Sub-Emitters" 모듈을 사용할 수 있다. 이것은 메인 파티클 시스템에서 방사되는 스파크나 잔해 같은 것을 만드는 데 사용할 수 있다.

  11. 파티클 시스템에 시각 효과를 추가하려면 파티클가 렌더링되는 방식을 제어할 수 있는 "Renderer" 모듈을 사용할 수 있다. 다양한 재료와 조명 옵션 중에서 선택하여 다양한 시각 효과를 만들 수 있다.

  12. 사실적인 파티클 시스템을 만들기 위해 "충돌" 모듈을 사용하면 장면에서 파티클와 다른 개체 간의 충돌을 감지할 수 있다. 이를 사용하여 환경과 충돌하는 폭발이나 불꽃 같은 것을 만들 수 있다.

  13. 물리학과 상호 작용하는 파티클 시스템을 만들려면 중력이나 바람과 같은 힘을 파티클에 적용할 수 있는 "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;
profile
학습한 내용을 빠르게 다시 찾기 위한 저장소

0개의 댓글