Unreal: AoE

4. Create Blueprint

Kang Min Kim
CodeAlpha
9 min readJun 14, 2021

--

앞서 제작한 이미터를 실행할 HUD와 블루프린트 만들고 Niagara System 과 연결해 원하는 이미터만 선택적으로 실행하는 기능을 만들어 본다. (🛎️ Gabriel Aguiar 의 강의 내용을 요약 및 정리한 스토리 입니다.)

1. Create Scale Parameter

NS_AoE_FireColumn01 > Parameters > Add Scale Parameter (float)
NS_AoE_FireColumn01 > User Parameters > Scale default value set to 1.0
01_CylinderAdd > Initialize Particle > Mesh Attributes > Mesh Scale
NS_AoE_FireColumn01 > Initialize Particle > Mesh Scale > Multiply Vector by Float > Vector set to previous value > Float > (USER) Scale

float 타입의 Scale 사용자 파라미터를 사용하기 위해서는 벡터 타입의 값들에 Float 값을 입력할 수 있는 익스프레션을 달아주어야 한다. 기존의 Mesh Scale 값을 기억해두고 Multiply Vector by Float 을 사용한 다음 Vector 값에 그대로 입력해주고 Float 값으로 Scale 상용자 변수를 달아준다. Scale 속성을 사용할 나머지 이미터들도 모두 이와 같이 작업해준다.

01_GroundBeamAdd > Initialize Particle > Mesh Scale > Vector > Float
01_SparksINAdd > Initialize Particle > Sprite Attributes > Minimum > Maximum
01_SparksINAdd > Set (EMITTER) Sphere Radius > Sphere Radius > A > B
02_CylinderAdd > Mesh Scale > Vector > Float
02_sparksOUTAdd > Initialize Particle > Minimum > Maximum
02_GroundBeamAdd > Initialize Particle > Mesh Attributes > Mesh Scale > Vector > Float
02_BeamFlash > Initialize Particle > Value > A > B
02_FireImpactAdd > Initialize Particle > Sprite Size > A > B > Value
02_SparksOUTAdd > Set (EMITTER) Sphere Radius > Sphere Radius > A > B
02_FireImpactAdd > Set (PARTICLES) Position > Z > A > B

2. Create HUD

Content Browser > RB > User Interface > Widget Blueprint > Rename to AoE_HUD
Widget Hierarchy
VFXName text widget check Is Variable
Usage text widget
VFXName variable set to public
SetVfxName function

Niagara system 의 조작법을 알려줄 HUD를 만든다. String 타입 변수인 Effect Name 을 SetVfxName 함수의 입력으로 받아 VFXName 텍스트 위젯의 이름을 변경한다.

3. Create AoE blueprint

Add Niagara Particle System Component > Rename to AreaOfEffectNiagara
Variables
Default Value setting for Impact Delay & Scale variable
SpawnAoE Function
Event Begin Play

Actor 를 부모 클래스로 하는 블루프린트를 만들고 이름을 BP_AreaOfEffect 로 변경한다. Niagara Particle System 을 컴포넌트로 추가하고 필요한 변수들을 추가한 뒤 public 으로 설정한다.

BP_AeraOfEffect Construction Script
Class Defaults of BP_AreaOfEffect

BP_AreaOfEffect 는 퍼블릭변수로 NS의 색상, 크기 등을 변경할 수 있도록 하였다. 이 블루프린트를 상속받은 child 블루 프린트를 통해 Niagara System 의 각 그룹에 사용한 User Parameters 를 편집할 수 있게 된다.

4. Create AoE Spawn blueprint

Create Actor base BluePrint > Rename to BP_SpawnVFX
Variables
Refresh VFX Name Event
Spawn VFX Event
Next & Previous Event
AoE Event BeginPlay
Key Events
Class Default of BP_SpawnVFX

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

Create Camera Actor & Empty Actor
Level Blueprint

레벨에 카메라 액터와 빈 액터를 배치하고 레벨 블루프린트에서 플레이어 컨트롤러의 뷰 타겟을 카메라 액터로 설정해 Play 할 때 마다 고정된 카메라 액터를 바라보게 한다.

Create Child Blueprint Class from BP_AreaOfEffect > Rename to BP_FireColumn
Generate a thumbnail for NS_AoE_FireColumn01 Niagara system
BP_FireColumn > VFXArea Of Effect Niagara > Delay Before Destroying > Scale

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초 이상을 입력해야 한다.

Place BP_SpawnVFX on the level

BP_SpawnVFX 를 레벨에 배치하고 BP_AreaOfEffect 타입의 클래스 레퍼런스 변수를 받는 VFXs 퍼블릭 변수에 위에서 만든 BP_FireColumn 을 지정해 Fire Point 로 지정한 액터의 위치에 VFX 가 생성되도록 해준다.

--

--