본문으로 건너뛰기

안동민 개발노트

본문 시작

파티클 생성 및 기본 속성 설정

Spawn Rate와 Burst로 생성 시점과 수량을 정하고 초기 위치·속도·수명·색상·크기를 설정해 기본 효과를 만듭니다.

이미터는 파티클 생성 규칙을 담는 단위입니다.

이번 절에서는 파티클이 언제 생성되고, 생성 직후 어떤 위치·속도·수명 값을 갖는지 확인합니다.

Particle Spawn은 생성량에서 화면 출력까지 기준선을 만든다

Spawn 단계에서 태어난 파티클은 초기 속성을 받은 뒤 Update가 읽고 Renderer가 그린다. 생성량과 수명을 함께 보아야 누적 비용도 설명된다.

  1. Rate / Burst

    지속 생성량 또는 순간 발생량을 정한다.

  2. Initialize

    Lifetime·Color·Size·초기 위치를 한 번 채운다.

  3. Velocity / Seed

    초기 방향과 반복 가능한 무작위 상태를 정한다.

  4. Particle Update

    매 프레임 힘·색·크기 변화를 누적한다.

  5. Renderer

    최종 속성을 Sprite·Mesh·Ribbon으로 화면에 그린다.

  6. Rate

    연기·비처럼 계속 이어지는 효과의 평균 밀도.

  7. Burst

    폭발·충돌처럼 한 프레임에 몰리는 생성 피크.

  8. Seed

    프리뷰와 게임에서 같은 랜덤 결과를 재현하는 기준.


파티클 생성: 스폰(Spawn) 모듈

Spawn 모듈은 생성량과 초기 상태를 먼저 고정한다

Spawn Rate와 Spawn Burst는 입자가 태어나는 방식을 정하고, Initialize 값은 이후 Update와 Renderer가 읽는 출발점이 된다.

모듈역할잘 맞는 효과문제 신호
Spawn Rate초당 일정 개수 생성연기, 비, 눈처럼 지속되는 효과밀도가 계속 과하거나 부족함
Spawn Burst특정 순간 대량 생성폭발, 충격, 파편 방출한 번에 튀는 양이 과함
Initialize ParticleLifetime, Color, Size, Velocity 초기값 설정모든 파티클의 시작 상태생성 직후부터 모양이 어긋남
Spawn 조건Emitter State와 활성 조건 확인타이밍이 중요한 효과원하는 시점에 나오지 않음

파티클은 이미터 내의 스폰(Spawn) 섹션에 있는 모듈들에 의해 생성됩니다.

이 섹션의 모듈들은 이미터의 수명 주기 동안 파티클을 뿌려주는 역할을 합니다.

주로 사용되는 두 가지 스폰 방식이 있습니다.

Spawn Rate

Spawn Rate 모듈은 파티클을 지속적으로, 초당 지정된 개수만큼 생성할 때 사용합니다.

마치 수도꼭지를 틀면 물이 계속해서 흘러나오는 것과 비슷합니다.

  • 사용 예시: 연기, 불꽃, 비, 눈처럼 끊임없이 이어지는 효과
  • 설정: Spawn Rate 모듈을 추가한 후, Spawn Rate 속성의 값을 변경하여 초당 생성될 파티클의 수를 조절합니다. 값이 높을수록 더 많은 파티클이 빠르게 생성됩니다.

Spawn Burst Instantaneous

Spawn Burst Instantaneous 모듈은 파티클을 특정 시점에 한 번에, 지정된 개수만큼 생성할 때 사용합니다.

폭죽이 터지면서 한 번에 불꽃이 펑 하고 터져 나오는 것과 같습니다.

  • 사용 예시: 폭발, 충격파, 짧은 섬광처럼 순간적으로 많은 파티클이 필요한 효과
  • 설정: Spawn Burst Instantaneous 모듈을 추가한 후, Number 속성의 값을 변경하여 한 번에 생성될 파티클의 총 개수를 조절합니다.

대부분의 나이아가라 효과는 이 두 가지 스폰 방식 중 하나를 사용하거나, 혹은 두 가지를 조합하여 사용하기도 합니다.

예를 들어, 지속적으로 타오르는 불꽃(Spawn Rate)과 함께 가끔 크게 터져 오르는 불씨(Spawn Burst)를 표현할 수 있습니다.


파티클의 기본 속성 설정

파티클이 생성되는 시점에는 마치 갓 태어난 아기처럼 아무런 특별한 속성이 없습니다.

파티클이 어떤 형태와 성질을 가질지 최초로 정의해주는 것이 바로 Initialize Particle 모듈입니다.

이 모듈은 스폰 섹션에 위치하며, 파티클이 생성될 때 가장 먼저 실행되어 파티클의 탄생 조건을 설정합니다.

Initialize Particle 모듈에서 설정할 수 있는 주요 기본 속성들은 다음과 같습니다.

  • Lifetime (수명): 파티클이 생성된 후 얼마나 오랫동안 존재할지를 초 단위로 정의합니다. 이 값은 단일 값으로 설정할 수도 있고, 최소/최대 값을 지정하여 무작위 범위 내에서 수명이 결정되도록 할 수도 있습니다.

    • Tip: 파티클의 수명을 길게 설정하면 효과가 더 오래 지속되고, 짧게 설정하면 빠르게 사라집니다.
  • Color (색상): 파티클이 생성될 때 가질 초기 색상을 정의합니다. RGBA(Red, Green, Blue, Alpha) 값을 조절하여 원하는 색상을 선택할 수 있습니다. Alpha 값은 파티클의 불투명도를 나타냅니다.

    • Tip: 일반적으로 파티클의 색상은 Color 모듈이나 Scale Color 모듈을 통해 수명에 따라 변화시키는 경우가 많습니다.
  • Sprite Size (스프라이트 크기): 파티클이 2D 스프라이트 형태로 렌더링될 때의 초기 크기를 정의합니다. X, Y 값을 개별적으로 설정하여 타원형 파티클을 만들 수도 있습니다.

    • Tip: 스프라이트 크기 역시 Scale Sprite Size 모듈을 통해 수명에 따라 변화시키는 것이 일반적입니다.
  • Sprite Rotation (스프라이트 회전): 파티클 스프라이트의 초기 회전 각도를 설정합니다.

  • Mesh Scale (메시 스케일): 파티클이 3D 메시 형태로 렌더링될 때의 초기 크기를 정의합니다.

  • Radius (반경): 파티클의 물리적 충돌 감지에 사용되는 반경을 정의합니다.

이 외에도 Initialize Particle 모듈에서는 파티클의 초기 위치, 초기 속도 등 다양한 속성을 설정할 수 있습니다.

하지만 이 모듈의 주요 목적은 최초의 상태를 정의하는 것이고, 이후의 동적인 변화는 Particle Update 섹션의 모듈들이 담당하게 됩니다.

스폰 방식과 초기값은 따로 외우기보다 제작 순서로 묶어 보면 쉽습니다.

먼저 생성량을 정하고, 그다음 생성 직후의 수명과 모양을 채운 뒤, 마지막으로 렌더러가 실제 화면에 그릴 형태를 정합니다.

생성 효과는 System에서 Renderer까지 한 경로로 완성된다

빈 System에 Emitter를 넣고 생성 방식과 초기 상태를 정한 뒤 Renderer로 출력해야 값이 어디에서 만들어지고 보이는지 추적할 수 있다.

  1. System

    효과 전체를 담을 NS_ 에셋과 외부 입력 경계를 만든다.

  2. Emitter

    파티클 생애와 반복을 담당할 실행 단위를 추가한다.

  3. Spawn

    Rate 또는 Burst로 언제 얼마나 태어날지 정한다.

  4. Initialize

    Lifetime·Color·Size·Velocity의 시작값을 채운다.

  5. Renderer

    Sprite 또는 Mesh로 계산 결과를 화면에 연결한다.

  6. Rate vs Burst

    amount 지속 효과는 초당량, 순간 효과는 이벤트당 발생량부터 맞춘다.

  7. Lifetime·Color·Size

    birth state 입자가 보이지 않으면 출력보다 먼저 0에 가까운 초기값을 확인한다.

초기 설정은 값 하나를 외우는 대신, 목적에 따라 조합을 선택하는 식으로 판단하면 안정적입니다.

파티클 생성/Initialize

Spawn Rate와 Burst는 “언제 몇 개를 만들지”를 정하고, Initialize Particle은 “태어난 순간 어떤 상태인지”를 정합니다. 이 둘을 분리해 보면 효과의 밀도와 모양을 빠르게 튜닝할 수 있습니다.

  1. 지속 효과

    Rate 지속 효과 연기, 비, 불꽃처럼 계속 이어져야 할 때 사용하며 평균 개수는 Rate × Lifetime으로 봅니다.

  2. 순간 효과

    Burst 순간 효과 폭발, 충격파, 섬광처럼 특정 시점에 밀도가 필요할 때 한 번에 생성합니다.

  3. 복합 효과

    Mix 복합 효과 기본 흐름은 Rate로 유지하고 강조 순간만 Burst를 더해 자연스러운 리듬을 만듭니다.

  4. Lifetime

    초기 속성 판단표 속성 먼저 묻는 질문 튜닝 방향 Lifetime 화면에 얼마나 오래 남아야 하나? 길수록 누적 개수와 잔상이 증가 Color / Alpha 태어날 때 밝기와 투명도는? Update의 Scale Color와 역할 분리 Sprite Size 처음부터 크게 보일 필요가 있나? 큰 크기는 오버드로우 비용도 함께 증가 Velocity 생성 직후 어느 방향으로 흘러가나? 랜덤 범위로 반복감을 줄이고 Update 힘과 구분

  5. 초기 제작 체크 먼저 1초 수명, 작

    크기, 낮은 Rate로 보이는지 확인합니다. 무작위 범위는 최소/최대 차이를 작게 시작해 점점 넓힙니다. 렌더러가 읽는 속성 이름과 Initialize 값이 맞는지 봅니다.


직접 해보기: 간단한 생성 효과 만들기

간단한 연습을 통해 파티클 생성과 기본 속성 설정을 직접 경험해 봅시다.

새로운 나이아가라 시스템 생성: New system with empty system 템플릿을 사용하여 NS_BasicSpawn이라는 이름의 빈 나이아가라 시스템을 만듭니다.

이미터 추가: 개요 패널에서 System 아래의 + 버튼을 눌러 Empty Emitter를 추가합니다.

Initialize Particle 모듈 추가: 새로 추가된 Emitter를 선택하고, Spawn 섹션 아래의 + 버튼을 클릭한 후 Initialize Particle을 검색하여 추가합니다.

  • 이 모듈을 추가하지 않으면 파티클이 정상적으로 렌더링되지 않거나 오류가 발생할 수 있습니다.

Spawn Rate 모듈 추가: Spawn 섹션 아래의 + 버튼을 다시 클릭하고 Spawn Rate을 검색하여 추가합니다.

값 조정
  • Spawn Rate 모듈의 Spawn Rate 값을 50 정도로 설정합니다. (초당 50개의 파티클 생성)
  • Initialize Particle 모듈의 Lifetime1.0으로 설정합니다.
  • Initialize Particle 모듈의 Sprite Size50.0으로 설정합니다.
  • Initialize Particle 모듈의 Color를 원하는 색상으로 변경해 보세요.

Sprite Renderer 모듈 추가: 마지막으로, Render 섹션 아래의 + 버튼을 클릭하고 Sprite Renderer를 추가합니다.

기본 효과가 보이지 않거나 너무 빽빽해질 때는 아래 순서처럼 생성량, 초기값, 렌더러를 분리해서 검증합니다.

기본 파티클 검증

NS_BasicSpawn 같은 첫 예제는 화려함보다 원인 분리가 중요합니다. 보이는 최소 상태를 만든 뒤 Spawn Rate, Initialize Particle, Sprite Renderer를 차례로 확인하면 문제 지점을 빠르게 찾을 수 있습니다.

  1. Empty Emitter

    비어 있는 이미터에서 시작해 시스템 자체가 정상 재생되는지 먼저 확인합니다.

  2. Spawn Rate

    초당 50개처럼 낮은 기준값으로 시작하고 Lifetime과 곱해 평균 개수를 봅니다.

  3. Initialize Particle

    수명, 크기, 색상을 고정값으로 채워 탄생 시점의 상태를 단순하게 만듭니다.

  4. Sprite Renderer

    렌더 섹션에 실제 렌더러를 넣고 머티리얼과 알파가 파티클을 표시하는지 확인합니다.

  5. 아무것도 안 보임

    문제 추적표 증상 먼저 볼 곳 빠른 수정 아무것도 안 보임 Spawn Rate, Lifetime, Renderer 낮은 Rate와 1초 수명으로 다시 시작 너무 빽빽함 Rate와 Lifetime의 곱 수명부터 줄이고 그다음 Rate를 조정 색이 반영 안 됨 Material의 Color/Alpha 입력 Initialize 값과 머티리얼 바인딩 확인 움직임이 없음 초기 Velocity 또는 Add Velocity Z축 값 하나만 넣고 방향 변화 확인

  6. 기준값 메모 Spawn Rate 50

    Lifetime 1.0 으로 평균 50개를 만듭니다. Sprite Size 50 으로 보이는지 확인한 뒤 크기를 줄입니다. 무작위 범위는 기본 상태가 보인 다음에만 추가합니다.

이제 뷰포트에서 흰색(또는 여러분이 설정한 색상)의 사각형 파티클들이 초당 50개씩 생성되어 1초 후에 사라지는 모습을 볼 수 있을 겁니다.

여기에 아직 움직임이나 동적인 변화는 없지만, 파티클이 어떻게 생성되고 어떤 초기 모습을 가지는지를 명확히 보여주는 예시입니다.


파티클의 생성과 기본 속성 설정은 모든 나이아가라 효과의 시작점입니다.

생성 수, 수명, 위치, 속도 같은 초기 값을 먼저 안정적으로 제어해야 이후 단계의 변화를 추적하기 쉽습니다.

Spawn과 Initialize는 이후 모듈이 읽을 기준선을 만든다

생성량, 수명, 크기, 색, 속도를 앞에서 안정화해야 Update와 Renderer의 문제를 분리해 볼 수 있다.

순서정하는 값다음 단계가 읽는 것이상이 보이면
01 Spawn Rate초당 생성 개수Viewport의 밀도생성량과 수명부터 함께 낮춘다
02 Burst순간 생성 여부와 개수폭발·충격의 첫 프레임한 번에 튀는 양을 분리한다
03 InitializeLifetime, Size, Color, VelocityUpdate의 계산 출발점초기 속성과 색을 기본값으로 되돌려 본다
04 Update시간에 따른 변화최종 위치와 색모듈 순서와 덮어쓰기 위치를 확인한다
05 Renderer화면 표현보이는 모양Renderer 활성과 Material 바인딩을 점검한다