파티클 속성 읽기 및 쓰기
나이아가라 스크립팅의 핵심은 파티클의 다양한 속성(Attributes) 을 읽고 쓰는 것입니다. 파티클의 위치, 속도, 색상, 크기, 수명 등 모든 정보는 속성으로 저장되며, 이 속성들을 조작함으로써 파티클의 동작을 완벽하게 제어할 수 있습니다. 마치 파티클이라는 객체가 가진 여러 변수들을 프로그래밍적으로 접근하고 변경하는 것과 같습니다.
이 절에서는 나이아가라 스크립트 에디터에서 파티클 속성을 어떻게 가져오고(Get
), 어떻게 설정하거나 변경하는지(Set
)에 대한 기본 개념과 활용법을 자세히 알아보겠습니다.
파티클 속성 읽기
파티클의 현재 상태를 파악하거나, 다른 계산의 입력 값으로 사용하기 위해서는 해당 속성의 값을 읽어와야 합니다. 나이아가라에서는 주로 Get
노드를 사용하여 파티클 속성을 읽습니다.
기본 사용법
노드 추가: 스크립트 에디터의 빈 공간에 마우스 우클릭하고, 원하는 속성의 이름을 검색합니다. (예: Get Particles.Position
, Get Particles.Velocity
, Get Particles.Color
, Get Particles.Lifetime
, Get Particles.NormalizedAge
등)
출력 핀 연결: Get
노드는 해당 속성의 현재 값을 출력 핀으로 내보냅니다. 이 출력 핀을 다른 연산 노드(예: Add
, Multiply
)나 Set
노드의 입력 핀에 연결하여 값을 활용합니다.
주요 예시
Get Particles.Position
: 파티클의 현재 3차원 위치(Vector3)를 가져옵니다.- 활용: 파티클의 위치를 기반으로 다른 파티클을 스폰하거나, 특정 영역에 들어왔는지 조건을 검사할 때.
Get Particles.Velocity
: 파티클의 현재 3차원 속도(Vector3)를 가져옵니다.- 활용: 파티클의 속도에 따라 색상이나 크기를 변경하거나, 속도에 비례하는 힘을 적용할 때.
Get Particles.Color
: 파티클의 현재 색상(Vector4 또는 Color)을 가져옵니다.- 활용: 파티클의 현재 색상에 다른 색상을 더하거나 곱하여 색상을 조절할 때.
Get Particles.Lifetime
: 파티클의 총 수명(Float)을 가져옵니다.Get Particles.NormalizedAge
: 파티클의 정규화된 수명(Float, 0.0 ~ 1.0)을 가져옵니다.- 활용: 파티클의 수명 진행률에 따라 크기, 색상, 투명도 등을 변화시키는 커브나 그래디언트의 입력으로 주로 사용됩니다.
Get Particles.SpriteSize
: 파티클 스프라이트의 현재 크기(Vector2)를 가져옵니다.Get Particles.ID
: 각 파티클의 고유 ID(Int)를 가져옵니다. 디버깅이나 특정 파티클을 식별할 때 유용합니다.
파티클 속성 쓰기
파티클의 속성 값을 변경하거나 새로 설정하기 위해서는 Set New or Existing Parameter
노드를 사용합니다. 이 노드는 나이아가라 스크립팅에서 가장 중요하고 자주 사용되는 노드 중 하나입니다.
기본 사용법
노드 추가: 스크립트 에디터의 빈 공간에 마우스 우클릭하고 Set New or Existing Parameter
를 검색하여 추가합니다.
매개변수 지정: Set New or Existing Parameter
노드를 선택하면 디테일(Details) 패널에 Parameter
속성이 나타납니다. 여기서 변경하고자 하는 파티클 속성(예: Particles.Position
, Particles.Color
)을 선택합니다.
- 또는, 노드의 입력 핀을 드래그하여 원하는 파티클 속성(예:
Particles.Color
)에 직접 연결하면 자동으로Set New or Existing Parameter
노드가 생성됩니다.
값 연결: 노드의 입력 핀(예: Color
핀)에 변경하고자 하는 새로운 값을 계산한 다른 노드의 출력 핀을 연결합니다.
실행 흐름 연결: Set New or Existing Parameter
노드는 일반적으로 이전 노드의 Do
(실행) 핀에서 연결을 받아 실행되고, 다음 노드의 Do
핀으로 실행을 넘깁니다. 이는 파티클 업데이트 모듈의 순차적인 실행 흐름을 나타냅니다.
활용 예시
Set Particles.Position
: 파티클의 위치를 강제로 설정하거나 변경합니다.- 활용: 특정 지점으로 파티클을 순간 이동시키거나, 외부 데이터(예: 메시 표면)에서 계산된 위치로 파티클을 배치할 때.
Set Particles.Velocity
: 파티클의 속도를 강제로 설정하거나 변경합니다.- 활용: 파티클에 새로운 방향과 크기의 속도를 즉시 부여할 때.
Set Particles.Color
: 파티클의 색상을 변경합니다.- 활용: 조건에 따라 색상을 변경하거나, 외부 입력에 따라 색상을 조절할 때.
Set Particles.Lifetime
: 파티클의 남은 수명을 변경합니다.- 활용: 파티클이 특정 이벤트(예: 충돌)를 겪었을 때 즉시 사라지게 하거나, 수명을 연장할 때.
속성 읽기 및 쓰기 조합 예시
가장 일반적인 예시는 파티클의 현재 속도를 읽어와서 특정 계산을 수행한 후, 다시 그 속성을 쓰는 것입니다.
예시: 파티클의 속도에 감속을 적용하기 (저항)
파티클이 움직이다가 점차 느려지도록 만들려면, 현재 속도를 읽어와서 일정한 비율로 줄인 다음 다시 속성에 써야 합니다.
Get Particles.Velocity
: 파티클의 현재 속도를 가져옵니다.
Multiply
(Vector * Float): Get Particles.Velocity
의 출력에 0.98
과 같은 Float
값을 곱합니다. (매 프레임마다 속도를 2%씩 줄임)
Set New or Existing Parameter
: Parameter
를 Particles.Velocity
로 설정하고, Multiply
노드의 결과를 이 노드의 Velocity
입력에 연결합니다.
이러한 방식으로 파티클의 속도에 공기 저항과 같은 감속 효과를 구현할 수 있습니다.
속성 초기화 vs. 업데이트
나이아가라에서 속성을 다룰 때 중요한 개념은 초기화(Initialization) 와 업데이트(Update) 의 차이입니다.
Initialize Particle
모듈: 파티클이 생성되는 순간, 즉 '탄생' 시점에 파티클의 초기 속성 값(위치, 속도, 색상, 수명 등)을 한 번만 설정합니다. 이 모듈은Particle Spawn
섹션에 위치하며, 여기서 설정된 값들은 파티클의 '기본값'이 됩니다.Particle Update
섹션의 모듈들: 파티클이 살아있는 동안 매 프레임마다 속성을 읽고 변경합니다. 이 섹션의 모든 모듈은Get
노드로 현재 속성을 읽어와서,Set
노드로 변경된 속성을 다시 쓰는 과정을 반복합니다.
따라서 Initialize Particle
에서 설정된 초기 값은 Particle Update
섹션의 모듈들에 의해 계속해서 변경될 수 있습니다.
파티클 속성을 읽고 쓰는 능력은 나이아가라 스크립팅의 가장 기본적인 토대입니다. 이 개념을 완벽히 이해하고 능숙하게 다룰 수 있다면, 여러분은 파티클의 모든 움직임과 변화를 자유자재로 제어할 수 있는 진정한 나이아가라 전문가가 될 것입니다.