간단한 이벤트 핸들러 설정
지금까지 우리는 파티클이 어떻게 생성되고(Spawn
모듈), 살아있는 동안 어떤 변화를 겪는지(Particle Update
모듈) 알아보았습니다. 이제 나이아가라 시스템의 또 다른 강력한 기능인 이벤트 핸들러(Event Handler) 에 대해 배울 시간입니다. 이벤트 핸들러는 특정 조건이 충족되었을 때 파티클 시스템 내에서 또는 외부로 특정 '이벤트'를 발생시키고, 이 이벤트에 반응하여 다른 동작을 수행하게 하는 메커니즘입니다.
간단히 말해, 이벤트 핸들러는 "만약 A라는 상황이 발생하면, B라는 일을 해라" 라고 파티클 시스템에게 지시하는 방법입니다. 이는 더욱 복잡하고 상호작용적인 시각 효과를 만드는 데 필수적입니다.
이벤트 핸들러란 무엇인가요?
이벤트 핸들러는 나이아가라 시스템에서 특정 조건(예: 파티클 충돌, 파티클 소멸 등)이 발생했을 때, 미리 정의된 동작을 수행하도록 연결하는 기능입니다. 이를 통해 여러 이미터 간에 상호작용을 구현하거나, 파티클의 상태 변화에 따라 새로운 효과를 트리거할 수 있습니다.
주로 다음과 같은 상황에서 이벤트 핸들러를 사용합니다.
- 파티클의 소멸 시점: 파티클이 수명을 다해 사라질 때 폭발 효과를 낸다거나, 잔여 파티클을 생성하는 경우.
- 파티클의 충돌: 파티클이 월드 또는 다른 오브젝트와 충돌할 때 스파크, 파편, 또는 소리 효과를 발생시키는 경우.
- 특정 임계값 도달: 파티클의 속도나 크기 등이 특정 값을 넘어섰을 때 다른 파티클을 생성하는 경우.
이벤트 핸들러의 구성 요소
이벤트 핸들러는 크게 두 가지 부분으로 구성됩니다.
이벤트 발생기 (Event Generator): 특정 조건이 충족되었을 때 이벤트를 '발생'시키는 모듈입니다. 주로 Particle Update
섹션에 위치합니다.
이벤트 수신기 (Event Receiver): 발생한 이벤트를 '수신'하여 미리 정의된 동작을 수행하는 모듈입니다. 주로 Emitter Update
또는 Spawn
섹션에 위치합니다.
가장 흔하게 사용되는 예시인 파티클 소멸 시 다른 파티클 생성을 통해 이벤트 핸들러의 기본 사용법을 알아보겠습니다.
직접 해보기: 폭발 효과 추가하기
이전 절에서 만든 NS_BasicSpawn
시스템을 확장하여, 파티클이 수명을 다해 사라질 때 작은 폭발 효과를 추가해 보겠습니다.
이벤트 발생기 설정
파티클이 사라지는 시점에 이벤트를 발생시키려면 Generate Location Event
모듈이 필요합니다.
NS_BasicSpawn
나이아가라 시스템을 엽니다.
개요(Overview) 패널에서 기존의 Emitter
(기본 이미터)를 선택합니다.
Particle Update
섹션 아래의 +
버튼을 클릭합니다.
Generate Location Event
를 검색하여 추가합니다.
- 이 모듈은 파티클이 소멸할 때 파티클의 위치를 이벤트 데이터로 생성하여 보냅니다.
Source Type
은Particle
로 유지하고,Location
은Particles.WorldPosition
으로 설정되어 있는지 확인합니다. (기본값)
새로운 이미터 추가: 소멸 시 폭발용 이미터
이제 이벤트를 수신하여 폭발 효과를 낼 새로운 이미터를 시스템에 추가합니다.
개요(Overview) 패널의 System
항목 아래에 있는 +
버튼을 클릭합니다.
New Emitter from Template
을 선택한 후 Next
를 클릭합니다.
템플릿 목록에서 Simple Sprite Burst
를 선택하고 Finish
를 클릭합니다.
새로 추가된 이미터의 이름을 BurstOnDeath
와 같이 알아보기 쉽게 변경합니다.
이벤트 수신기 설정
BurstOnDeath
이미터가 파티클 소멸 이벤트를 수신하도록 설정합니다.
새로 추가된 BurstOnDeath
이미터를 선택합니다.
Emitter Update
섹션을 클릭하고, 기존에 있을 수 있는 Emitter State
등의 모듈 아래에 있는 +
버튼을 클릭합니다.
Receive Location Event
를 검색하여 추가합니다.
- 이 모듈은
Generate Location Event
모듈이 보낸 위치 이벤트를 수신합니다. Event Name
은 기본적으로/NiagaraEvent/LocationEvent
로 설정되어 있습니다. 이는Generate Location Event
모듈이 생성하는 기본 이벤트 이름과 일치해야 합니다. (기본적으로 일치합니다.)
Spawn
섹션으로 이동합니다.
기존에 있던 Spawn Rate
모듈을 삭제합니다. (우클릭 > Delete 또는 선택 후 Delete 키)
Spawn
섹션 아래의 +
버튼을 클릭합니다.
Spawn Particles from Event
를 검색하여 추가합니다.
- 이 모듈은 수신된 이벤트 데이터(
Receive Location Event
모듈)를 기반으로 파티클을 생성합니다. Source
를ReceiveLocationEvent
로 설정합니다. (기본값)Spawn Count
는1
로 설정하여 이벤트당 하나의 폭발이 일어나도록 합니다.
Initialize Particle
모듈에서 Lifetime
을 0.5
정도로 짧게, Sprite Size
는 20.0
정도로 작게 조정합니다. Color
도 작은 폭발 느낌이 나도록 주황색이나 노란색 계열로 변경해 보세요.
이제 뷰포트에서 NS_BasicSpawn
의 흰색 파티클이 사라지는 순간, 그 위치에서 작은 주황색/노란색 파티클이 터져 나오는 것을 확인할 수 있습니다!
이벤트 핸들러의 다른 활용 예시
- 충돌 이벤트:
Collision
모듈을 사용하여 파티클이 월드와 충돌했을 때 이벤트를 발생시키고, 이 이벤트를 수신하여 스파크나 먼지 효과를 생성할 수 있습니다. - 데이터 인터페이스: 게임 코드나 블루프린트에서 나이아가라 시스템으로 이벤트를 직접 전송하여, 게임 플레이 상황에 따라 동적으로 파티클 효과를 발생시킬 수 있습니다.
- 파티클의 속성 변화에 따른 이벤트:
Data Interface Event By Name
등을 사용하여 파티클의 속도가 특정 임계값에 도달했을 때 이벤트를 발생시키는 고급 기능도 있습니다.
이벤트 핸들러는 나이아가라 시스템에 복잡한 상호작용과 동적인 반응성을 부여하는 강력한 도구입니다. 단순히 파티클이 정해진 대로 움직이는 것을 넘어, 환경이나 다른 파티클의 상태에 반응하여 새로운 효과를 만들어낼 수 있게 해줍니다. 이 기본 개념을 이해하셨다면, 앞으로 여러분이 만들 시각 효과의 가능성은 무궁무진하게 확장될 것입니다.