일단 캐릭터 이동을 세팅하기 위해, 새로 만든 플랫포머 과제용 프로젝트에 빈 레벨을 생성하고 캐릭터로 만들기 위한 에셋을 임포트했다.
| 캐릭터 에셋 | 빈 레벨 생성 |
|---|---|
![]() | ![]() |
컨텐츠 브라우저-우클릭-블루프린트 생성-캐릭터로 CharacterMovement 컴포넌트를 가지고 있는 캐릭터를 생성하고, 해당 블루프린트의 스켈레탈 메쉬 칸에 임포트한 에셋을 집어넣고 캡슐 컴포넌트와 메쉬의 사이즈를 맞추었다.
| 캐릭터 에셋 | 사이즈 정렬 |
|---|---|
![]() | ![]() |
그리고 컨텐츠 브라우저에서 Input 폴더를 생성, IMC_NBC_Default와 IA_NBC_Move, IA_NBC_Look, IA_NBC_Jump를 생성. 각각을 WASD를 입력값으로 하는 Axis2D, 마우스 입력을 받는 Axis2D, 스페이스바 입력을 받는 Digital 입력으로 설정하고, 블루프린트 노드에서 대응되는 형태로 구현하였다.
| Look | Move | Jump |
|---|---|---|
![]() | ![]() | ![]() |
내가 생각한 플랫포머 형태를 만들기 위해 (길고 좁은 탑을 둘러서 플랫포머를 진행한 후 중앙으로 도약) 일단 맵 가운데에 스케일을 늘린 큐브 4개를 배치해 탑을 만들었다.
| 상상?도 | 액터 생성 |
|---|---|
|
|
먼저, 추후 재활용을 용이하게 하기 위해 기본 플랫폼을 블루프린트화 해서 저장하였다.
그리고, 이를 복제하여 각기 다른 효과를 지닌 플랫폼들을 생성하였다.

플랫폼 위에 콘 형태의 가시들과 오버랩 이벤트 활성화 용 Box Collision을 설치한 플랫폼이다. Box Collision의 경우, 옆에서 스쳤다 죽는 것을 방지하기 위해 플랫폼 크기보다 좀 작게 만들어 설치하였다.
해당 블루프린트에서

오버랩 될 시 BP_Character에 저장되어 있는 Die 이벤트를 불러와 캐릭터가 죽을 수 있도록 설정하였다.
캐릭터가 위에 올라왔을 시 조금 흔들거리다 밑으로 떨어지며 사라지는 플랫폼의 경우, 구현을 위해 기존 플랫폼 위에 Box Collision을 설치해서 생성하였다. 밑으로 내려갔다 올라오는 기능을 넣기 위해 플랫폼의 위치와 그 위치보다 500 거리 아래에 있는 지점을 각각 StartLocation과 TargetLocation으로 설정해 주고, IsVanishing 불리언 변수를 설정해 주어 한번 트리거가 발동되었을 시 이벤트가 전부 끝날 때까지 다시 이벤트가 발동될 일이 없도록 만들었다.

이후 실제 흔들거리다가 내려오는 기능은 다음과 같은 블루프린트로 구현하였다.

가장 먼저 실행되는 타임라인의 경우, 액터의 이동을 그래프로 관리하게 해 주는 블루프린트 노드이다.

내부에는 이와 같이 (약) 0~1 사이의 값을 가지는 Alpha 3초 동안 사전에 정해진 그래프대로 재생해주는 기능이 들어있다. 여기서 나오는 Alpha 값을 Lerp(선형보간)에 시작지점과 종료지점과 함께 넣으면, 0일 때 시작 지점, 1일 때 목표지점에 위치하는 벡터 위치값을 구할 수 있다. 이를 해당 플랫폼의 발판 역할을 하는 큐브 컴포넌트의 Location에 지정을 해주면 3초 동안 원하는 모양대로 움직이는 플랫폼을 생성할 수 있다.
처음에는 액터 자체를 움직이는 형식으로 구현했지만, 그 경우 처음의 흔들거림에 캐릭터도 흔들거리고, 플랫폼이 밑으로 내려갈 때 캐릭터도 같이 밑으로 내려가 버리는 게 마음에 들지 않아 같은 색의 발판을 플랫폼 위에 설치했다. 이러면 플랫폼의 흔들거림이나 추락에 플레이어가 영향을 받지 않아, 좀 더 코믹하게 "가만히 서있다가 발판이 쑥 내려가서 공중에 떠 있는 만화 속의 추락씬" 같은 모습을 재현할 수 있다.
플랫폼 자체의 콜리전은 오버랩 이벤트가 시작되고 흔들거림이 시작할 때 부터 끄고, 발판이 실제 캐릭터 지탱을 담당하다 1.5초 후에(이미 플랫폼은 추락하고 난 뒤에) 해당 발판의 콜리전과 플랫폼의 Visibility를 동시에 해제해 발판이 사라지며 캐릭터가 추락하도록 했다. 이후엔 타임라인에서 보듯이 플랫폼은 본래 위치로 되돌아오고 이벤트가 시작된 지 3초 뒤에 사라지는 플랫폼 이벤트가 끝나고 콜리전과 Visibility가 모두 정상으로 되돌아온다.
엘리베이터 플랫폼의 경우, BP_Elevator와 BP_ElevatorTarget 두 개를 만들어 각각의 엘리베이터 플랫폼 인스턴스 (맵에 배치된 엘리베이터) 가 목표 지점을 설정해 왕복운동을 할 수 있게 만들었다.
| BP_Elevator | BP_ElevatorTarget |
|---|---|
![]() | ![]() |