이 퀵스타트 가이드는 다양한 컴포넌트로 레벨에 액터를 만든 다음 블루프린트 클래스로 변환하고, 캐릭터가 레벨에서 날아다니도록 점프 비헤이비어를 추가하는 방법을 안내합니다. 블루프린트 클래스로 만든다는 것은 콘텐츠 브라우저(Content Browser) 에서 레벨로 드래그하기만 하면 월드에 점프패드를 원하는 만큼 생성할 수 있다는 뜻이기도 합니다.
1 - 필수 프로젝트 구성
- 언리얼 프로젝트 브라우저의 새 프로젝트 탭에 있는 게임 카테고리에서 다음 세팅을 사용하여 새 프로젝트를 생성합니다.
- 횡스크롤
- 블루프린트
- 시작용 콘텐츠 포함
-
구성에 가장 적합한 엔진 퀄리티 및 퀄리티 세팅을 선택합니다.
어떤 세팅이 적절한지 잘 모르겠다면 프로젝트 세팅 섹션에서 자세한 내용을 확인할 수 있습니다.
- 프로젝트를 명명한 다음 프로젝트 생성(Create Project) 버튼을 클릭하여 프로젝트를 생성합니다.
이제 횡스크롤 레벨이 나타나, 바로 추가 작업을 시작할 수 있습니다.
2 - 점프패드 생성하기
레벨 에디터에서 점프패드를 만든 다음, 점프패드에 게임플레이 비헤이비어를 추가할 수 있도록 블루프린트 클래스로 변환합니다.
-
먼저, 레벨의 제일 상단 플랫폼이 보일 때까지 뷰포트를 이동합니다.
빈 액터를 사용하여 점프패드의 모든 요소를 저장할 컨테이너를 생성해 보겠습니다. 필요한 두 요소(또는 컴포넌트)는 점프패드를 나타내는 셰이프와 캐릭터가 오버랩될 때의 트리거입니다.
-
메인 툴바에서 모드(Modes) 버튼을 누르고, 드롭다운에서 선택(Select) 을 클릭하여 액터 배치(Place Actors) 패널을 표시합니다.
-
액터 배치 패널에서 기본(Basic) 을 클릭한 다음 빈 액터(Empty Actor) 를 찾습니다.
-
레벨로 드래그하여 상단 플랫폼 중 하나에 배치합니다.
-
이제 레벨에서 액터가 선택되었으므로 프로퍼티가 디테일(Details) 패널에 표시됩니다. 디테일 패널 상단에서 이름을 변경할 수 있습니다. 박스를 클릭하여 LaunchPad 와 같은 새 이름을 입력합니다.
-
디테일 패널에서 컴포넌트 추가(Add Component) 버튼을 클릭한 다음 일반(Common) 아래의 큐브(Cube) 를 선택합니다.
-
새로 추가한 큐브 를 클릭한 상태로 DefaultSceneRoot 로 드래그하여 새 루트로 만듭니다.
-
큐브 컴포넌트가 선택된 상태로 스케일 을 (X: 1.0, Y: 1.0, Z: 0.1)로 변경합니다.
-
이제 무언가 오버랩될 때마다 이벤트를 발동하는 박스 콜리전 컴포넌트를 추가해 보겠습니다. 디테일 패널에서 컴포넌트 추가 버튼을 클릭한 다음 콜리전(Collision) 아래의 박스 콜리전(Box Collision) 을 선택합니다.
-
박스 콜리전 스케일을 (X: 1.25, Y: 1.25, Z: 9.75)로, 위치를 (X: 0, Y: 0, Z: 200)으로 변경하여 박스가 점프패드를 덮고 위로 확장되도록 합니다.
액터의 프로퍼티를 변경해야 하는 경우 언제든지 디테일 패널의 컴포넌트 추가 버튼 아래에 있는 LaunchPad(Instance) 를 클릭하면 됩니다.
이제 원하는 방식으로 액터를 만들었으니, 블루프린트 클래스로 변환해 보겠습니다. 블루프린트 에디터 내에 더 많은 컴포넌트를 추가하고 레벨에서처럼 미세조정할 수 있습니다.
3 - 액터를 블루프린트 클래스로 변환
블루프린트 내부를 변경하면 레벨에서 새 점프패드를 만들 때마다 블루프린트 에디터 에서 생성한 룩 앤 필을 갖추게 됩니다. 단순히 레벨의 점프패드 액터를 복제해도 되지만, 특정 점프패드에 적용한 변경사항은 해당하는 하나의 사본에만 영향을 미칩니다.
-
디테일 패널에서 블루프린트/스크립트 추가(Blueprint/Add Script) 버튼을 클릭합니다.
-
선택에서 블루프린트 생성(Create Blueprint from Selection) 다이얼로그가 나타납니다. 블루프린트의 디폴트 경로를 편집해 보겠습니다.
-
경로를 Game/SideScrollerBP 에서 Game/SideScrollerBP/Blueprints 로 변경합니다.
-
이 시점에서 블루프린트의 이름을 변경할 수 있습니다. 디폴트인 LaunchPad_Blueprint 로 그대로 두어도 됩니다.
-
블루프린트 생성(Create Blueprint) 을 클릭합니다.
이제 콘텐츠 브라우저 에 블루프린트가 표시됩니다. 지금 바로 콘텐츠 브라우저 에서 레벨로 드래그 앤 드롭하여 플랫폼 메시 및 트리거의 사본을 여러 개 생성할 수도 있지만, 아직 아무런 비헤이비어도 설정되지 않은 상태입니다. 다음 단계에서는 캐릭터가 점프패드를 지날 때 점프하도록 하는 그래프 노드를 블루프린트에서 구성해 보겠습니다.
4 - 시작점 만들기
블루프린트 클래스에 비헤이비어를 추가하려면 블루프린트 에디터에서 열어야 합니다.
-
콘텐츠 브라우저 에서 블루프린트 클래스를 더블클릭합니다.
-
블루프린트 에디터 가 열리며, 뷰포트에서 큐브 및 박스 컴포넌트가 표시됩니다. 이 시점에서 박스 컴포넌트의 배치를 조정하면 이 블루프린트 클래스에서 만드는 모든 점프패드에 적용됩니다. 점프패드 액터의 컴포넌트로 작업했을 때와 마찬가지로, 컴포넌트 목록에서 박스 컴포넌트를 선택하고 그 위치를 조정할 수 있습니다. 위치를 (X: 0, Y: 0, Z: 350)으로 설정합니다.
-
뷰포트(Viewport) 탭 옆에 도킹된 것은 컨스트럭션 스크립트(Construction Script) 탭과 이벤트 그래프*(Event Graph) 탭입니다. 게임플레이 비헤이비어를 생성할 것이므로 이벤트 그래프 에서 시작해야 합니다. 해당 탭을 클릭합니다.
이벤트는 블루프린트 그래프 실행의 시작점으로, 많고 다양한 게임플레이 상황과 연관될 수 있습니다. 지금 반투명한 이벤트 노드로 표시된 것은 가장 일반적으로 사용되는 이벤트로 대다수 블루프린트 그래프에 분명 유용하지만, 이벤트를 직접 만들어 보겠습니다.
-
박스(Box) 컴포넌트에 무언가 오버랩될 때 실행되는 이벤트를 만들고자 합니다. 먼저 컴포넌트(Components) 탭에서 박스 컴포넌트를 선택합니다.
-
그래프의 빈 곳을 우클릭하여 그래프에 추가할 수 있는 노드의 컨텍스트 메뉴를 표시합니다.
그래프에서 이동하려면 우클릭하고 드래그합니다. 이 시점에서 그래프를 왼쪽으로 드래그하여 사전에 배치된 이벤트 노드를 화면 좌측으로 옮기고 점프패드 로직을 생성할 빈 공간을 더 확보할 수 있습니다.
-
이 컴포넌트에 이벤트를 추가할 것이므로 박스에 대한 이벤트 추가(Add Event for Box) 드롭다운을 펼친 다음 콜리전(Collision) 을 선택합니다. 검색창에서 'Component Begin Overlap'을 검색하여 메뉴를 필터링해도 됩니다.
-
컴포넌트 오버랩 시작 시(On Component Begin Overlap) 를 선택합니다.
이제 그래프에 OnComponentBeginOverlap 노드가 생겼을 것입니다. 이 이벤트에 연결된 모든 노드는 점프패드 박스 컴포넌트에 무언가 오버랩될 때 실행됩니다.
이 가이드의 다음 단계에서는 이 노드의 출력 핀에 노드 연결을 시작하고, 블루프린트 내 노드 작업에 대해 자세히 알아보겠습니다.
5 - 오버랩되는 액터 테스트하기
현재 OnComponentBeginOverlap 이벤트는 박스 트리거에 무언가 오버랩될 때 실행됩니다. 이제 오버랩되는 것이 아바타 또는 폰인 경우에만 점프 비헤이비어가 실행되도록 하려고 합니다. "박스 트리거에 오버랩되는 액터가 폰과 동일한 액터인가?"라는 질문을 던진다고 생각하면 됩니다.
OnComponentBeginOverlap 이벤트의 Other Actor 출력으로 해당 작업을 수행해 보겠습니다.
-
OnComponentBeginOverlap 이벤트에서 Other Actor 핀을 클릭하고 그래프의 빈 곳으로 드래그 앤 드롭하여 컨텍스트 메뉴를 표시합니다.
컨텍스트 메뉴는 적응형으로, 현재 작업 중인 핀으로 필터링하여 호환되는 노드만 표시합니다.
-
검색창에 = 기호를 입력하여 사용 가능한 노드를 필터링한 다음 Equal (Object) 를 선택합니다.
Equal 노드의 다른 입력으로 Side Scroller Character 를 설정할 수도 있지만, 그렇게 되면 사용 중인 캐릭터를 바꾼 경우에 이 블루프린트를 다시 열고 수동으로 업데이트해야 합니다. 대신 현재 사용 중인 폰의 레퍼런스를 구하도록 하겠습니다.
- 그래프의 빈 곳을 우클릭하여 컨텍스트 메뉴를 표시합니다.
-
메뉴 검색창에 Player Pawn 을 입력한 다음 게임(Game) 에서 Get Player Pawn 을 선택합니다.
-
Get Player Pawn 의 Return Value 출력을 Equal 노드의 두 번째 입력에 연결합니다.
이제 다른 액터가 플레이어가 제어하는 폰인지 알려 주는 노드를 만들었으니, 그 답변을 사용하여 그래프의 실행 흐름을 변경해 보겠습니다. 즉, 실행 흐름이 On Component Begin Overlap 노드를 떠날 때 실행 흐름을 제어할 것입니다. 그러기 위해서는 흐름 제어 노드(특히 Branch 노드)를 사용해야 합니다.
-
OnComponentBeginOverlap 노드의 실행 핀을 그래프의 비어 있는 부분에 드래그 앤 드롭합니다.
-
검색창에 Branch 를 입력한 다음, 컨텍스트 메뉴에서 Branch 를 선택합니다.
-
Equals 노드의 출력 핀을 Condition 노드의 입력 부울 핀에 연결합니다.
이제 그래프가 준비되었으니, 오버랩되는 액터가 폰인지 여부에 따라 서로 다른 비헤이비어를 실행하도록 구성할 수 있습니다. 다음 단계에서는 이 구성과 함께 Equals 비교의 결과가 True 인 경우 캐릭터가 점프하도록 블루프린트 노드를 구성해 보겠습니다.
6 - 캐릭터 점프시키기
점프패드는 Launch Character 라는 함수로 작동합니다. Launch Character 함수는 캐릭터의 현재 속도에 지정한 속도를 추가하여 원하는 방향으로 캐릭터를 이동할 수 있도록 합니다. 이 함수는 캐릭터에서만 작동하므로, 폰(아바타)이 캐릭터(인간형 아바타)여야 합니다.
이는 형변환을 통해 가능합니다. 형변환은 입력을 다른 타입으로 변환하여 해당 특정 타입에만 허용되는 함수 기능에 액세스할 수 있도록 해 주며, 입력이 해당 타입에 기반한 경우 형변환이 성공합니다.
레벨에 배치할 수 있는 모든 요소는 액터이며, 다른 특수 비헤이비어는 나중에 추가됩니다. 즉 레벨 내 모든 요소에 대한 레퍼런스를 구할 수 있다는 의미로, 액터(Actor)로 형변환하면 형변환에 성공하게 됩니다. 하지만 레벨에 있는 모든 요소가 게임에서 플레이어를 나타내는 폰은 아니므로, 폰 으로의 형변환은 성공할 수도, 성공하지 못할 수도 있습니다.
-
Get Player Pawn 노드에서 Return Value 핀을 드래그합니다.
-
컨텍스트 메뉴의 검색창에 Cast to Character 를 입력하여 이름이 동일한 노드를 찾습니다.
-
Cast to Character 노드에서 As Character 핀을 드래그합니다.
-
검색창에서 'Launch'를 입력한 다음, 컨텍스트 메뉴에서 Launch Character 를 선택합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
성공적인 형변환의 출력 실행 핀이 Launch Character 의 입력 실행 핀에 자동으로 연결된 것을 볼 수 있습니다.
-
Launch Character 노드의 Z 필드에 3000 을 입력합니다.
-
마지막으로 Branch 노드의True 실행 핀을 Cast to Character 노드의 입력 실행 핀에 연결하여 Cast to Character 및 Launch Character 가 오버랩되는 액터가 폰인 경우에만 실행되도록 합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
이 시점에서 툴바 버튼을 사용하여 블루프린트를 컴파일(Compile) 및 저장(Save) 한 다음, 블루프린트 에디터를 닫습니다.
-
점프패드 여러 개를 콘텐츠 브라우저 에서 레벨로 드래그합니다.
-
툴바에서 플레이 를 클릭한 다음 WASD를 눌러 레벨에서 달리고, 스페이스 바를 눌러 점프합니다. 플랫폼 중 하나에 착지하여 공중으로 날아오르는 모습을 지켜보세요!
7 - 직접 해보기
이 퀵스타트 가이드에서 배운 내용을 활용하여 다음 작업을 수행해 보세요.
-
오디오 컴포넌트를 사용하여 캐릭터가 점프할 때 사운드를 재생합니다.
-
변수를 생성하여 점프 속도를 저장하고, 레벨 내 각 사본에 설정할 수 있도록 노출합니다.
-
블루프린트에 파티클 시스템 컴포넌트를 추가하고 시작용 콘텐츠 에서 파티클 시스템 중 하나를 사용합니다.
-
화살표 컴포넌트를 추가하고, 회전을 사용하여 캐릭터가 점프하는 방향을 정의합니다.
-
타임라인을 사용하여 박스 메시에 몇 가지 애니메이션을 추가하여 캐릭터가 점프하는 것을 표현합니다.
블루프린트 비주얼 스크립팅에 대한 자세한 내용은 블루프린트 페이지를 참조하세요.
이 퀵스타트에서 살펴본 내용에 대해서는 다음을 참조하세요.