블루프린트 라이브세션 내용 중 기억해 둘 만한 것

  • 언리얼 프로젝트 주소에 절대로 한국어 넣지 말 것.
  • 레벨 여러개 동시에 띄어놓고 볼 수 없다. 어쩔수없다.

캐릭터 이동 세팅 복습

일단 캐릭터 이동을 세팅하기 위해, 새로 만든 플랫포머 과제용 프로젝트에 빈 레벨을 생성하고 캐릭터로 만들기 위한 에셋을 임포트했다.

캐릭터 에셋빈 레벨 생성

컨텐츠 브라우저-우클릭-블루프린트 생성-캐릭터로 CharacterMovement 컴포넌트를 가지고 있는 캐릭터를 생성하고, 해당 블루프린트의 스켈레탈 메쉬 칸에 임포트한 에셋을 집어넣고 캡슐 컴포넌트와 메쉬의 사이즈를 맞추었다.

캐릭터 에셋사이즈 정렬

그리고 컨텐츠 브라우저에서 Input 폴더를 생성, IMC_NBC_Default와 IA_NBC_Move, IA_NBC_Look, IA_NBC_Jump를 생성. 각각을 WASD를 입력값으로 하는 Axis2D, 마우스 입력을 받는 Axis2D, 스페이스바 입력을 받는 Digital 입력으로 설정하고, 블루프린트 노드에서 대응되는 형태로 구현하였다.

LookMoveJump

플랫포머 맵 구성

내가 생각한 플랫포머 형태를 만들기 위해 (길고 좁은 탑을 둘러서 플랫포머를 진행한 후 중앙으로 도약) 일단 맵 가운데에 스케일을 늘린 큐브 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_ElevatorBP_ElevatorTarget
profile
개발지망생

0개의 댓글