6개월 유니티 게임 개발일지 : 파티클에 대해 5

hipop1109·2026년 1월 6일

오늘 분석 싹 끝내고 내일은 반드시 모작으로 들어가는걸로 할거임

Lifetime by Emitter Speed

에미터 스피드에 따른 생명주기를 나타냄
파티클이 생성될 때의 에미터 속도에 따라 각 파티클의 초기 수명을 제어함
파티클을 생성한 오브젝트의 속도에 기반하는 값에 파티클의 시작 수명을 곱하는 개념
쉽게 풀자면 파티클 시스템 자체가 움직이는 속도에 따라 파티클의 수명을 자동으로 조정해주는 개념

Multiplier
파티클의 초기 수명에 적용할 멀티플라이어
모듈은 설정된 커브 모드에 따라 이 값을 다르게 사용함

  • Constant
    항상 같은 배율로 적용
    속도에 비례하지만 변동성이 필요없을 때 적용
    .
  • Curve
    X축 : Emitter Speed(정규화)
    Y축 : Multiplier 값
    결과값 : 느릴 때엔 거의 안남고, 빠를 땐 길게 늘어지는 개념으로 적용됨
    .
  • Random Between Two Constants(상수 랜덤)
    파티클 하나가 생성될 때의 랜덤 배율을 결정
    같은 속도여도 파티클마다 수명이 다르다
    속도와는 무관하고 랜덤은 생성시 1회 고정
    .
  • Random Between Two Curves(커브 랜덤)
    두 개의 커브 사이에서 랜덤 보간
    파티클마다 서로 다른 커브를 사용하는 개념
    랜덤은 파티클 생성 시 적용 ->
    생성 후에는 그 커브를 끝까지 유지하는 개념
    비슷한 모양을 피하고 속도에 반응하고 개체별 개성을 주기 위한 개념
    .
    Speed Range
    파티클 시스템이 Multiplier 커브를 따라 값에 따라 조정되는 최소 ~ 최대 에미터 속도
    Curve 또는 Random Curves 모드일 때만 적용되는 모드
    파티클 시스템 오브젝트 자체가 얼마나 빨리 움직이느냐를 정규화하는 구간이라고 해석
    속도를 얼마나 민감하게 받아들일지 정하는 스케일 기준을 잡음

Force Over Lifetime

파티클의 생존 시간 동안 지속적으로 가속을 가하는 힘
위치를 직접 바꾸는 것이 아닌 속도를 계속 바꾸는 힘 (가속을 주는 개념)

Velocity Over Lifetime -> 속도를 강제로 설정
Force over Lifetime -> 속도를 점점 변화시킴
가속과 강제 힘의 차이를 줌

X, Y, Z : 그 방향으로 가속 줌
.
Space : 로컬, 월드에서 어느 방향으로 줄지를 정함
.
Randomize : 각 파티클마다 Force 방향, 세기를 조금씩 랜덤화시켜주는 옵션
매 프레임마다가 아닌 한번 생성될 때 쳐주는 개념으로 적용

Color over lifetime

생명주기에 따른 색깔과 투명도를 적용해줌

이런 식으로 들어가서 색깔을 넣으면 4개의 조절 탭이 보인다


아래 탭은 색을 조절하는 부분으로, 생명 주기 동안 어느 타이밍에 어느 색을 줄지 세밀하게 조정할 수 있다


위 탭은 투명도 탭으로, 생명 주기 동안 어느 타이밍에 어느 정도의 투명도를 줄지 세밀하게 조정할 수 있다

이 두 탭 모두 무한정으로 복사가 가능해 생명 주기 동안 마음대로 투명도를 늘렸다 줄렸다, 색을 조절할 수 있다, 꽤나 자주 쓰이는 옵션 중 하나

Color by Speed

위 탭과 똑같지만 차이가 있다
Color over lifetime : 생명주기 동안 색의 변화, 모든 파티클은 모두 이 시간을 지킴
Color by Speed : 속도에 따른 색의 변화, 파티클 조각마다 다른 효과를 줄 수 있음
요런 느낌으로 통일성과 랜덤성을 원하는 대로 조정 가능하다

Size Over Lifetime, Size by Speed

위 탭의 설명을 사이즈로만 바꾸면 완벽하게 설명이 될것이다

조금 설명을 덧붙이자면
Separate Axes를 하면 세부적으로 크기를 조정할 수 있고
마찬가지로 아래 Size by Speed는 속도별로 크기가 달라지는 효과로 볼 수 있다

Rotation Over Lifetime, Rotation by Speed

위 탭의 설명을 다시 각도로 바꾼 개념

똑같이 Separate Axes하면 축별로 각도를 잡아줄 수 있다
Speed Range는 위 Lifetime Emitter에서 본듯이 시간별 변화 강도를 조절 가능하다

External Forces

얘는 써본적이 없어서 이런 저런 문헌을 참고해왔다
씬에 존재하는 Force Field 컴포넌트의 힘을 파티클이 실시간으로 받아 움직이게 하는 모듈
한마디로 파티클 시스템 내가 아닌 외부 오브젝트가 힘을 제공하는 개념
여러 파티클이 한 환경적인 힘을 공유할 수 있는 개념으로 다가감

이 옵션을 활용하기 위해선 파티클 시스템 그 자체와 Particle System Force Field가 필요하다

이 포스 필드를 참조해서 받아오는 모듈이다

일단 External Force 탭 자체부터 분석하자면

Multiplier : 받아내는 강도를 조절
.
Influence Filter : 어떤 포스 필드의 영향을 받을 지 선택하는 필터
1. Layer Mask : 포스 필드의 게임오브젝트 레이어
- 레이어별로 나눈 포스필드 전체의 영향을 받는 개념
2. List : 포스 필드 개별 지정
- 드래그 앤 드랍한 포스필드의 영향을 받음
3. Layer Mask and List : 둘다 만족해야 함
.
Influence Mask : 이 포스 필드가 어디까지 영향을 끼칠 지 조정해주는 개념


포스 필드 그 자체에 대해 분석해보자면 공간 안에 존재하는 보이지 않는 힘의 영역을 뜻한다
파티클이 이 영역 안에 들어오면 지속적인 힘을 받음 -> 여러 파티클 시스템이 같은 환경 규칙을 공유할 수 있다

  1. Shape : Force Field의 영향 범위와 형태를 정의함
  • Sphere / Hemisphere / Box / Cylinder : 모양
  • Start Range / End Range : 시작, 끝 범위 지정
    .
  1. Direction : 지정한 방향으로 파티클을 계속 밀어주는 개념
  • X, Y, Z 축을 지정해 밀어주는 개념
    .
  1. Gravity : 필드 내에서 중력을 적용함
  • Strength은 까는 힘
  • Focus은 0에 가까울수록 균일하고 값이 커질수록 중심 쪽으로 집중됨
    .
  1. Rotation : 회전값
  • Speed은 회전 속도, 값이 클수록 빠르게 회전함
  • Attraction은 회전하면서 중심으로 끌어당길지의 여부 지정
  • 0이면 단순하게 회전하고, 값이 커지면 빨려들어가는 소용돌이를 만들어줌
  • Randomness은 회전축의 랜덤성을 줌, 값이 커지면 회전히 흐트러진다
    .
  1. Drag : 공기 저항
  • Strength 은 감속 강도임, 클수록 파티클이 빠르게 느려지는 개념
  • Multiply by Size 은 파티클 크기에 따라 저항감을 다르게 하는 개념
  • Multiply by Velocity 는 빠를수록 저항이 커지는 개념, 자연스러운 감속을 지정해줌
    .
  1. Vector Field : 텍스쳐 기반의 힘의 흐름을 줌
  • Volume Texture (Texture 3D)는 벡터 필드 텍스쳐, 각 픽셀이 힘의 방향을 지정해줌
  • Speed은 벡터 흐름을 적용하는 강도이다
  • Attraction은 벡터 방향으로 끌리는 정도를 지정해준다
    -> 되게 무겁다고 하네요? 모바일에서는 하지 말래요

얘를 따로 실험해보고 싶은것도 있고 분량이 너무 많아져서 내일로 끊어보겠습니다 수고하십쇼

profile
쑥쑥 개발자

1개의 댓글

comment-user-thumbnail
2026년 1월 14일

유익해요

답글 달기