Unreal: AoE
4. Create Blueprint
앞서 제작한 이미터를 실행할 HUD와 블루프린트 만들고 Niagara System 과 연결해 원하는 이미터만 선택적으로 실행하는 기능을 만들어 본다. (🛎️ Gabriel Aguiar 의 강의 내용을 요약 및 정리한 스토리 입니다.)
1. Create Scale Parameter
float 타입의 Scale 사용자 파라미터를 사용하기 위해서는 벡터 타입의 값들에 Float 값을 입력할 수 있는 익스프레션을 달아주어야 한다. 기존의 Mesh Scale 값을 기억해두고 Multiply Vector by Float 을 사용한 다음 Vector 값에 그대로 입력해주고 Float 값으로 Scale 상용자 변수를 달아준다. Scale 속성을 사용할 나머지 이미터들도 모두 이와 같이 작업해준다.
2. Create HUD
Niagara system 의 조작법을 알려줄 HUD를 만든다. String 타입 변수인 Effect Name 을 SetVfxName 함수의 입력으로 받아 VFXName 텍스트 위젯의 이름을 변경한다.
3. Create AoE blueprint
Actor 를 부모 클래스로 하는 블루프린트를 만들고 이름을 BP_AreaOfEffect 로 변경한다. Niagara Particle System 을 컴포넌트로 추가하고 필요한 변수들을 추가한 뒤 public 으로 설정한다.
BP_AreaOfEffect 는 퍼블릭변수로 NS의 색상, 크기 등을 변경할 수 있도록 하였다. 이 블루프린트를 상속받은 child 블루 프린트를 통해 Niagara System 의 각 그룹에 사용한 User Parameters 를 편집할 수 있게 된다.
4. Create AoE Spawn blueprint
Niagara System 을 스포닝 시킬 블루프린트를 만든다. BP_AreaOfEffect 블루 프린트의 클래스 레퍼런스를 타입으로 하는 퍼블릭 변수 VFXs 에 Spawn 시킬 NS_System 을 추가하고 레벨에 배치한 Actor 의 위치에(여기서는 FirePoint) Spawn 시키는 역할을 한다.
D 와 A 키에 바인드된 이벤트는 VFXs 배열의 길이 -1 값을 배열에서 인덱싱할 정수를 구하는데 사용하는데 배열의 길이는 항상 인덱싱 할 정수 보다 +1 값이 크기 때문에 -1 값을 적용해 사용한다.
인덱싱된 BP_AreaOfEffect 클래스를 CurrentVFX 클래스 변수에 담고 스페이스바 이벤트를 통해 레벨에 Spawn 하게 된다.
5. Create Level Blueprint
레벨에 카메라 액터와 빈 액터를 배치하고 레벨 블루프린트에서 플레이어 컨트롤러의 뷰 타겟을 카메라 액터로 설정해 Play 할 때 마다 고정된 카메라 액터를 바라보게 한다.
BP_AreaOfEffect 로 부터 Child 블루 프린트를 만들고 퍼블릭 변수로 설정해놓은 VFXArea Of Effect Niagra 에 NS_AoE_FireColumn01 을 지정해준다. Niagara Particle System 컴포넌트를 통해 NS 를 받아 Niagara System 타입의 public 변수값으로 설정한다.
Delay Before Destroying 는 NS 의 Duration 시간만큼 입력해야 한다. 2초의 duration 을 갖는 NS 라면 2초 이상을 입력해야 한다.
BP_SpawnVFX 를 레벨에 배치하고 BP_AreaOfEffect 타입의 클래스 레퍼런스 변수를 받는 VFXs 퍼블릭 변수에 위에서 만든 BP_FireColumn 을 지정해 Fire Point 로 지정한 액터의 위치에 VFX 가 생성되도록 해준다.