파티클 사용하기

# 학습 과정 소개

파티클이란 눈이나 비, 먼지 같은 다수의 작은 입자를 말합니다. 파티클 컴포넌트를 통해 입자의 속성과 재생 상태를 제어할 수 있습니다. 이번 시간에는 파티클 컴포넌트의 개념과 활용 방법을 살펴봅시다.

##### 참고 API Reference

[BaseParticleComponent](/apiReference/Components/BaseParticleComponent) [AreaParticleComponent](/apiReference/Components/AreaParticleComponent) [BasicParticleComponent](/apiReference/Components/BasicParticleComponent) [SpriteParticleComponent](/apiReference/Components/SpriteParticleComponent) [UIBaseParticleComponent](/apiReference/Components/UIBaseParticleComponent) [UIAreaParticleComponent](/apiReference/Components/UIAreaParticleComponent) [UIBasicParticleComponent](/apiReference/Components/UIBasicParticleComponent) [UISpriteParticleComponent](/apiReference/Components/UISpriteParticleComponent) [ParticleEmitEndEvent](/apiReference/Events/ParticleEmitEndEvent) [ParticleEmitStartEvent](/apiReference/Events/ParticleEmitStartEvent) [ParticleLoopEvent](/apiReference/Events/ParticleLoopEvent) [ParticleService](/apiReference/Service/ParticleService)

# 파티클 사용하기

파티클을 사용해 입자의 다양한 움직임을 표현할 수 있습니다. [gif](166330355094795e601dda1164aac848ae79d1496e768)

파티클을 사용하는 방법은 세 가지입니다. 크리에이터가 원하는 방법으로 파티클을 사용할 수 있습니다.

[{"Preset List에서 배치":"\u0001 Preset List - Particle Effect에서 원하는 파티클을 \u0001 Scene에 배치","엔티티에 파티클 컴포넌트 추가":"파티클을 생성할 엔티티의 \u0001 Property에 파티클 컴포넌트 추가","Workspace에서 추가":"\u0001 Workspace에서 파티클 모델을 선택해 \u0001 Scene에 배치"},{"Preset List에서 배치":"[png](16606313000388e7d4aa6e5374d6196f17bf2166b1b3e)","엔티티에 파티클 컴포넌트 추가":"[png](16606314685787f65edd3774b494cb32c9f285a4abdbc)","Workspace에서 추가":"[png](1660285664348a8db102a53b142f9b04a4e043ab2bb09)"}]

# 파티클 컴포넌트의 종류

파티클 컴포넌트는 크게 월드와 UI용으로 구분되며, 총 세 가지의 파티클이 있습니다.

  * 월드용 파티클 컴포넌트: [BasicParticleComponent](/apiReference/Components/BasicParticleComponent), [SpriteParticleComponent](/apiReference/Components/SpriteParticleComponent), [AreaParticleComponent](/apiReference/Components/AreaParticleComponent)
  * UI용 파티클 컴포넌트: [UIBasicParticleComponent](/apiReference/Components/UIBasicParticleComponent), [UISpriteParticleComponent](/apiReference/Components/UISpriteParticleComponent), [UIAreaParticleComponent](/apiReference/Components/UIAreaParticleComponent)



## BasicParticleComponent

[BasicParticleComponent](/apiReference/Components/BasicParticleComponent)는 일반적인 파티클을 제어하는 컴포넌트입니다. [png](16633078865839e5488d2c3574197a38db8ff29c04719)

[{"프로퍼티":"ParticleType","설명":"생성할 파티클의 타입을 설정합니다.  파티클 타입에 따라 지원되는 프로퍼티가 달라집니다."},{"프로퍼티":"Color","설명":"렌더링 될 파티클의 색상을 보정합니다.  [gif](1660286156819e905e8074a604e01800aa653fb244c1c)"},{"프로퍼티":"Loop","설명":"파티클 반복 재생 여부를 설정합니다."},{"프로퍼티":"ParticleCount","설명":"파티클 입자 개수를 설정합니다.  [gif](16602820708290573d1ebd7634d4491632ef67088c0f5)"},{"프로퍼티":"ParticleLifeTime","설명":"파티클 입자의 지속 시간을 설정합니다. [gif](1660282419952c9bc08a01b6040ae929a90ddb867fc96)"},{"프로퍼티":"ParticleSize","설명":"파티클 입자의 크기를 설정합니다. [gif](16602825979965f0f3af7b4304a6a9d3f220a9f645128)  파티클 전체의 크기를 제어하고 싶다면 TransformComponent의 Scale을 조절해봅시다."},{"프로퍼티":"ParticleSpeed","설명":"파티클 입자의 속도를 설정합니다. [gif](1660284180137e517a7338d2f4482ba095199640f0fc5)"},{"프로퍼티":"PlayOnEnable","설명":"파티클 컴포넌트가 Enable일 때, 파티클을 재생할지 여부를 설정합니다. 재생 이후의 반복 여부는 Loop 프로퍼티를 통해 설정해야 합니다."},{"프로퍼티":"PlaySpeed","설명":"파티클 재생 속도를 설정합니다. PlaySpeed = 0이면 파티클이 일시 정지한 것처럼 보입니다. PlaySpeed는 음수를 지원하지 않으며, 음수는 0과 동일하게 취급됩니다. [gif](166028475387470172905ee5b4714b327f18bf21dce0c)"},{"프로퍼티":"Prewarm","설명":"Enable인 경우 파티클 입자의 최대 개수를 불러와 파티클을 자연스럽게 재생합니다. 파티클이 처음 재생되는 순간부터 그전에 이미 파티클이 재생되고 있었던 것처럼 자연스럽게 보이게 됩니다."},{"프로퍼티":"SortingLayer","설명":"2개 이상의 Entity가 겹쳤을 때 Sorting Layer에 따라 보이는 우선순위가 결정됩니다."},{"프로퍼티":"OrderInLayer","설명":"같은 Layer 내의 우선순위를 결정합니다. 수가 클수록 앞에 보입니다."},{"프로퍼티":"IgnoreMapLayerCheck","설명":"SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다."},{"프로퍼티":"AutoRandomSeed","설명":"파티클의 입자 방출이 시작될 때마다 랜덤 시드를 새로 생성할지 여부를 설정합니다."}]

## SpriteParticleComponent

[SpriteParticleComponent](/apiReference/Components/SpriteParticleComponent)는 스프라이트로 파티클을 만드는 컴포넌트입니다. 예를 들어 SpriteParticleComponent - SpriteRUID에 c4839de6b7be438abf008b5f547cbe98를 설정하면 아래와 같이 하트 모양의 스프라이트로 파티클이 생성됩니다. [gif](1663309554383b08e07180d384167a62f7383bcd4710b) 주요 프로퍼티를 살펴봅시다.

[{"프로퍼티":"ApplySpriteColor","설명":"파티클이 사용할 Sprite에 Color 프로퍼티를 적용할지 여부를 설정합니다. 프로퍼티가 false일지라도 Color의 투명도 값은 적용됩니다."},{"프로퍼티":"SpriteRUID","설명":"파티클로 사용할 SpriteRUID를 설정합니다."}]

## AreaParticleComponent

[AreaParticleComponent](/apiReference/Components/AreaParticleComponent)는 파티클의 생성 범위를 지정할 수 있는 컴포넌트입니다. 파티클의 생성 범위가 변경되더라도 범위 내에 생성되는 파티클의 개수는 동일합니다. 파티클의 생성 범위를 넓히면서 ParticleCount도 함께 높이면 파티클의 밀도를 이전과 비슷하게 유지할 수 있고, 파티클의 생성 범위만 넓힌다면 파티클의 밀도는 낮아지게 됩니다. 주요 프로퍼티를 살펴봅시다.

[{"프로퍼티":"Bounds","설명":"Edit 버튼을 누르면 Scene에서 AreaOffset과 AreaSize를 조절할 수 있습니다. Edit 할 때 보이는 사각형 범위는 파티클의 존재 범위가 아니라 생성 범위입니다. 생성 이후 파티클의 이동에 따라 사각형 범위를 벗어날 수 있습니다.  [png](166027977616209fce41236a24051a06ec41c99c44699)"},{"프로퍼티":"AreaOffset","설명":"Entity를 기준으로 생성 범위의 중심점 위치를 설정합니다."},{"프로퍼티":"AreaSize","설명":"파티클 생성 범위의 너비와 높이를 지정합니다."}]

## UIBasicParticleComponent

[UIBasicParticleComponent](/apiReference/Components/UIBasicParticleComponent)는 일반적인 파티클을 제어하는 컴포넌트입니다. UI에서만 사용 가능합니다. 주요 프로퍼티를 살펴봅시다.

[{"프로퍼티":"ParticleType","설명":"생성할 파티클의 타입을 설정합니다.  파티클 타입에 따라 지원되는 프로퍼티가 달라집니다."},{"프로퍼티":"Color","설명":"렌더링 될 파티클의 색상을 보정합니다."},{"프로퍼티":"LocalScale","설명":"파티클의 크기입니다."},{"프로퍼티":"PlaySpeed","설명":"파티클 재생 속도를 설정합니다. PlaySpeed = 0이면 파티클이 일시 정지한 것처럼 보입니다. PlaySpeed는 음수를 지원하지 않으며, 음수는 0과 동일하게 취급됩니다."},{"프로퍼티":"ParticleSize","설명":"파티클 입자의 크기를 설정합니다."},{"프로퍼티":"ParticleSpeed","설명":"파티클 입자의 속도를 설정합니다."},{"프로퍼티":"ParticleCount","설명":"파티클 입자 개수를 설정합니다."},{"프로퍼티":"ParticleLifeTime","설명":"파티클 입자의 지속 시간을 설정합니다."},{"프로퍼티":"PlayOnEnable","설명":"파티클 컴포넌트가 Enable일 때, 파티클을 재생할지 여부를 설정합니다. 재생 이후의 반복 여부는 Loop 프로퍼티를 통해 설정해야 합니다."},{"프로퍼티":"Loop","설명":"파티클 반복 재생 여부를 설정합니다."},{"프로퍼티":"Prewarm","설명":"Enable인 경우 파티클 입자의 최대 개수를 불러와 파티클을 자연스럽게 재생합니다. 파티클이 처음 재생되는 순간부터 그전에 이미 파티클이 재생되고 있었던 것처럼 자연스럽게 보이게 됩니다."},{"프로퍼티":"AutoRandomSeed","설명":"파티클의 입자 방출이 시작될 때마다 랜덤 시드를 새로 생성할지 여부를 설정합니다."}]

## UIAreaParticleComponent

[UIAreaParticleComponent](/apiReference/Components/UIAreaParticleComponent)는 UI에 파티클의 생성 범위를 설정할 수 있는 컴포넌트입니다. 파티클의 생성 범위가 변경되더라도 범위 내에 생성되는 파티클의 개수는 동일합니다. 주요 프로퍼티를 살펴봅시다.

[{"프로퍼티":"AreaSize","설명":"파티클 생성 범위를 설정합니다."},{"프로퍼티":"AreaOffset","설명":"Entity를 기준으로 생성 범위의 중심점 위치를 설정합니다."}]

## UISpriteParticleComponent

[UISpriteParticleComponent](/apiReference/Components/UISpriteParticleComponent)는 UI에 스프라이트로 파티클을 만드는 컴포넌트입니다.

[{"프로퍼티":"SpriteRUID","설명":"파티클로 사용할 SpriteRUID를 설정합니다."},{"프로퍼티":"ApplySpriteColor","설명":"파티클이 사용할 Sprite에 Color 프로퍼티를 적용할지 여부를 설정합니다. 프로퍼티가 false일지라도 Color의 투명도 값은 적용됩니다."},{"프로퍼티":"LocalScale","설명":"파티클의 크기를 설정합니다."}]