
두 번째로 만들 기본 템플릿은 Platforming이며 SideScroller와 매우 유사하다.
몇 가지 추가된 사항만 다루면 되는데 크게 두 가지로, 발에 붙어 있는 VFX(Visual Effects)와 대시 기능이다.
나머지 더블 점프와 벽점프는 유사하다.
VFX 먼저 보면,
언리얼 엔진에서 VFX(Visual Effects)는 불꽃, 연기, 마법, 충격파 같은 시각적 효과를 의미한다.
보통 Niagara 시스템을 사용해 입자 기반으로 제작한다.
VFX를 만드는 법은 추후 공부해보기로 하고, 이미 만들어진 것을 복사했다.

이제 캐릭터 클래스로 가서 캐릭터 메시의 하위에
Niagara Particle System Component를 추가한다.

두 개의 컴포넌트를 추가한 후 부모 소켓으로 foot_r과 foot_l로 설정한다.

그리고 이벤트 그래프에서 색상을 설정한다.

이 상태에서 자동 활성화가 켜져 있으면 움직이거나 점프할 때 VFX 효과를 볼 수 있다.
공중에서만 효과가 나타게 하기 위해 지금은 끄고,
점프나 대시가 시작하고 끝날 때 수동으로 활성화를 변경한다.


대시로 넘어가기 전 벽 점프에서 사용한 Sphere Trace By Channel을 보면,
Sphere Trace By Channel
시작 지점과 끝 지점 사이를 구체 형태로 스캔하여 충돌을 감지하는 기능이다.
선(Line)과 달리 반지름을 가진 구체로 검사하므로 넓은 범위의 판정이 가능하며,
근접 공격, 주변 오브젝트 탐지, 바닥 감지 등에 자주 사용된다.
언리얼에서는 Trace Channel을 통해 감지할 대상 종류를 설정할 수 있다.
이 함수는 시야 범위 체크나 플레이어 주변 감지, 트레이스 디버깅 시 결과를 시각적으로 확인하기 쉬워 자주 활용되며 매우 유용하다.

Debug Type을 For Duration으로 설정하고 플레이해 보면,
액터의 시작 위치에서 일정 거리까지 구체 형태로 Trace가 진행되는 것을 확인할 수 있다.
이때 특정 Channel과 충돌하면 초록색으로 시각화되며, Hit 이벤트가 발생해
부딪힌 정보를 기반으로 캐릭터의 위치나 회전을 조정하는 데 활용할 수 있다.


다음 Dash로 가면, 두 개의 Bool 변수가 존재하는데 Has Dashed와 Is Dashing이다.
Has Dashed 변수는 Dash 이벤트에서 땅에서 점프할 때를 판정하며 Dash가 연속으로 눌리는걸 방지한다.
Is Dashing 변수는 다른 행동을 제어할 때 사용한다.

애니메이션 몽타주를 사용할 때 루트 모션으로 움직일 것이기 때문에 중력과 속도는 0으로 설정한다.

루트 모션
애니메이션에 포함된 움직임(이동/회전)을 실제 캐릭터 이동에 적용하는 기능이다.
애니메이션 안에 있는 움직임 데이터(구르기, 점프 거리)가 실제 캐릭터 위치 변화에 반영된다.

이어서, VFX를 활성화 해주고, 애니메이션 몽타주를 재생한다.

애니메이션이 중간에 끊기거나 Custom event인 End Dash가 호출되었을 때 변수들을 초기화해주면 된다.

애니메이션 몽타주와 애님 노티파이를 만들고,

애님 몽타주에서 노티파이 클래스를 호출한다.
그리고 노티파이 클래스에서 Received Notify 함수를 오버라이드하여 캐릭터 클래스의 End Dash 이벤트를 호출하면 된다.


대시까지 하면 Platforming의 기능은 모두 구현하였다.
