Unreal Engine/게임클래스 - 언리얼엔진 기초

[31강] Particle Effect

whereareyoung 2024. 6. 30. 21:09

이번 강의에서는 번개 효과를 작업할 예정인데, 이미 만들어진 어셋을 어떻게 가져오고 편집하는지에 대해 다룰것이다.  

그리고 콤보 공격 마지막 타격에서 번개 효과가 플레이 되도록 구현할 것이다. 

 

* Particle Effect : 입자를 플레이시켜 효과를 내는 시스템

사실 파티클을 제대로 만드는 것은 디자인팀의 영역이긴 하지만, 이번시간에는 편집하고 사용하는 법에 대해 다루고 다음시간에는 "Sword Trail" 이라는 파티클을 만들며 익혀보도록 할 예정이다.

 

 

이펙트 가져오기 

1. Infinity Blade Effects > Maps > "Overview" map 열기 

" Infinity Blade Effects "는 저번에 다른거 진행할때 가져왔던 무료 콘텐츠인데, 이걸 활용하여 작업을 해 줄 예정이다.

 

다음과 같이 번개치는 효과인 "P_Genno_Weapon" Emitter" 를 사용할 것이다. 

 

2.  "P_Genno_Weapon" 선택 밑 경로탐색 

이 어셋의 우측 돋보기를 눌러 주면 다음과 같이 경로가 나온다. 

 

3. 애셋액션 > 이주 > 작업중인 Unreal 프로젝트파일의 "Content" 폴더 선택 

 

4. 폴더 정리

1) 작업중이던 "Battle_02" 프로젝트 > InfinityBladeEffects > "Effects"폴더 콘텐츠 폴더로 이동시켜 주기 

2) 가져온 "P_Genno_Weapon" Emitter" 이펙트를 Effects 상단으로 이동시켜 주기 

 

 

이펙트 편집하기 

위 번개의 경우 이미터가 네 개가 존재하고 있다. 

Lighting : 번개 1

LightingStarg : 번개 2

Glow : 번쩍임 효과 

Sparks : 빛 날림 효과 

 

< Emitter >

- Emitter : 입자를 움직이기 위한 규칙 

-  Particle System : 입자를 플레이 시켜 효과를 보여주기 위해 이미터들을 관리하는 시스템 

- 모듈 : 각 이미터가 가지고 있는 속성들 

- 모듈 Required : "Required"아래 있는 파티클 전체를 관할

* 모듈은 위 이미지와 같다. 

 

< Emitter 설정 >

- Required > Use Local Space : 중요한 부분이다, 마법공격 구현때 이 부분을 켜고 끄며 작업할 예정이다  

- Duration : 얼마만큼 생존을 할 건가, 얼마만큼 플레이 길이를 가질 건가

* Emitter Loop 가 0이면 무한반복 진행, 이 부분을 1로 주면 1번만 플레이되고 끊김 

- LifeTime : 몇초부터 몇초까지 생존을 할 건가 

- Initial Size : 최초로 얘가 등장할 사이즈 

- Color Over Life : 시간이 지남에 따라 색이 어떻게 변할건지 

- Subimage Index : 0부터 1까지 비율지점을 지정해 주는것 

- Initial Velocity : 최초 속도가 어느지점으로 어느만큼 나갈건지 

- Initial Location : 처음 시작되는 위치

- Camera Offset : 카메라 바라보는 방향을 어떻게 처리할지 

- Orbit : 얼마나 공전할 것인가 

- Acceleration : 가속을 얼마나 줄 것인가, 갈수록 가속되는 것 지정 

- Delay : 얼마있다가 이정도의 시간만큼 플레이가 될지

- Spawn : 플레이 시간 동안 몇 개의 입자가 보여질지를 결정 

 

모듈들은 더 많은데, 이정도가 기본이라고 할 수 있다. 

 

1. 각 Emitter 의 Emitter Loop 를 1로 바꾸어주어 1번만 플레이 될 수 있도록 한다. 

 

2. "Lightning" Emitter 의 Spawn Rate 를 다음과 같이 "1.0" 으로 변경하여 준다. 

* 하단에 Scale 은 1.0 값에 랜덤으로 더해지는 값인데, 위의 경우에는 1.0 부터 0까지의 수가 랜덤으로 더해지게된다. 

 

3. "Lightning" Emitter, "LightningStart" Emitter, "Glow" Emitter 의 Initial Velocity 의 z축을 다음과 같이 마이너스로 변경하여 준다. 

현재 처럼 위에서 아래로 번개가 치는것이 아니라, 땅에서 위로 번개치게 효과를 만들기 위해 z축의 값을 반대로 변경하여 준다. 

 

4. 모든 Emitter 의 Initial Location 의 z축을 다음과 같이 절반 값으로 변경하여 준다. 

* "Sparks" Emitter의 경우 Max, Min 둘 다 절반 값으로 변경하여 준다. 

 

5. "Lightning" Emitter, "LightningStart" Emitter 의 Duration 을 각각 "0.15", "0.1" 로 세팅하여 준다.

 

6. 세팅을 마친 후 저장하고, 화면에 끌어당겨 효과가 제대로 적용되는지 확인 할 수 있다. 

 

 

번개 치기 효과 구현 

1. "BP_Player" > "Attacking Event" 다음과 같이 구현하여 준다. 

1) Combo Data 에 3번으로 되어있으며 마지막 공격이였으면 index 가 0, 1, 2이니 Combo Count 2일때 마지막 공격이다.  

공격의 마지막 콤보인지 체크한 후 이펙트 효과를 구현한다. 

* Length : 크기를 리턴해 줌 

 

2) "SwordLastCombo" Boolean 형 변수를 생성한 후 다음과 같이 세팅한다. 

2. CustomEvent "PlayLastComboEffect" 생성 후 다음과 같이 구현한다. 

1) LastCombo 였는지 체크해 주고, True 였으면 다음과 같이 "P_Genno_Weapon" 파티클 플레이 

- Spawn Emitter At Location : 지정한 위치에서 파티클을 플레이 시킴 

- Spawn Emitter Attach : 소켓을 지정해 소켓의 위치에서 파티클 플레이 

* 파티클플레이 시키는 방법은 대표적으로 두가지가 있다. 한번 플레이하고 제거, 캐릭터가 갖는 파티클 형식 이번 구현에서는 첫번째 방식을 사용하였다. 

 

2) 적의 위치를 구현 후 컴파일 및 저장 

커스텀 이벤트에 적 "Damager" 추가 및 다음과 같이 구현 

* Auto Destroy 는 플레이 후 삭제여부를 묻는 건데, 일반적으로 체크한다. 

 

3) 추가로 라스트 콤보를 초기화 시켜주기 위해 위에도 다음과 같이 처리하여 준다. 

 

3. "BP_Enemy" > 다음과 같이 Die 이전에 구현 

 

완료후 컴파일 하여보면 다음과 같이 공격스킬이 정상적으로 구현되는 것을 확인 할 수 있다. 

 

 

추가로 더 자연스러운 콤보 공격 구현을 위해 "Player_Combo_Table" > Attack 1,2,3 의 PlayRate 를 각각 1.2, 1.5, 1.25 로변경하여준다.  

 

이제 다음시간에는 칼 궤적을 실제로 구현하는 것을 더하고, "칼" 에 관한 구현을 마무리 한 후 모드를 변경하는 것을 다루고, 마법(위자드) 모드 제작할 예정이다.

 

나중에 시간이 된다면 맨손으로 전투하는 Body fist를 모드를 만들어 보는 것도 도전해보고 싶다! 

내일 공부가 기대되는 밤이다.