게임의 여러 플레이가능 캐릭터를 전환하거나, 캐릭터가 (차량, 비행기, 탱크 등의) 비히클에 탑승하도록 하거나, 별도로 제어되는 다른 폰(플레이어가 제어할 수 있는 일체형 기관총같은 것)을 제어하도록 하려는 경우, 거기에 입력 정보를 전달하기 위해서는 그 캐릭터 또는 폰 을 빙의 (Possess)하는 것이 좋을 것입니다.
폰의 조종을 담당하는 것은 플레이어 컨트롤러 이며, 폰의 빙의에는 플레이어 컨트롤러 지정이 필요합니다. 폰 자체는 인간형 캐릭터일 필요 없이 기본 이동을 적용하여 플레이어가 제어할 수 있도록 하고자 하는 그 무엇이든 될 수 있습니다. 반면 캐릭터는 콜리전과 캐릭터 무브먼트 컴포넌트가 기본적으로 포함되어 있는 형태의 폰이기에, 기본적인 인간형 동작이 가능합니다.
구현 안내
프로젝트에서 Possess (빙의)와 UnPossess 블루프린트 노드를 사용하여 Pawn 또는 Character 의 제어권을 취해 입력을 전해주는 법을 배워봅니다.
이 가이드에서는 블루프린트 횡스크롤 템플릿을 사용하나, 원한다면 별도의 프로젝트를 사용하셔도 됩니다. 프로젝트 생성법이나 템플릿 사용법을 모르시는 경우, 프로젝트 브라우저 페이지에서 자세한 정보를 확인하시기 바랍니다.
단계
-
콘텐츠 브라우저 에서 추가로 제어하고자 하는 캐릭터를 레벨에 끌어놓습니다.
Content > SideScrollerBP > Blueprints 폴더에서 레벨에 SideScrollerCharacter 블루프린트를 두 개 추가하여, 총 세 개가 되도록 합니다. 이 템플릿 프로젝트에는 기본적으로 캐릭터가 이미 레벨 안에 배치되어 있습니다.
-
월드 아웃라이너 에서 제어하고자 하는 캐릭터 각각을 선택합니다.
-
메인 툴바에서 블루프린트 버튼을 클릭하고 레벨 블루프린트 열기 를 선택합니다.
-
그래프 영역에 우클릭 한 다음 컨텍스트 메뉴에서 선택된 액터로의 레퍼런스 생성 옵션을 선택합니다.
그러면 레벨에 선택한 캐릭터 각각에 대한 참조이 가능합니다.
-
그래프 영역에 우클릭 한 다음 1 키보드 이벤트를 검색한 다음 선택합니다.
1 키를 누르거나 뗄 때마다 이벤트를 발동시키는 것이 가능해집니다.
-
그래프에 2 와 3 키보드 이벤트를 추가합니다.
-
그래프에 우클릭한 다음 Get Player Controller 노드를 검색 추가합니다.
Player Controller 를 사용해서 사람 플레이어의 입력을 받은 다음 폰에 대한 동작으로 변환합니다.
-
Get Player Controller 노드의 Return Value 를 좌클릭 으로 끌어놓고 Possess 노드를 검색 추가합니다.
Player Controller 더러 어떤 폰에 빙의하여 조종할 것인지 알려줍니다. Possess 함수가 호출되면, 폰이 현재 제어되고 있는지 자동으로 검사한 다음 새 폰 빙의 시도 전 Unpossess (빙의해제)합니다.
플레이어가 폰의 제어권을 놓고서, 예를 들어 플레이 가능 캐릭터를 직접 조종하지 않는 관람자 모드로 들어가도록 하려는 경우에 UnPossess 함수를 사용하면 됩니다.
-
Possess 노드를 두 개 더 만든 다음 아래와 같이 1, 2, 3 키보드 이벤트에 연결합니다.
이제 1, 2, 또는 3 키가 눌리면 폰을 빙의하도록 구성했습니다. 다음으로 우리 레퍼런스에서 어떤 폰을 빙의할지 정의해야 합니다.
-
아래와 같이 In Pawn 핀 각각에 대해 SideScrollerCharacter 레퍼런스 각각을 연결합니다.
함수성 스크립팅이 완료되었으니 이제 테스트해 봅시다.
-
툴바에서 컴파일 을 클릭하여 스크립트를 업데이트합니다.
-
툴바에서 플레이 를 클릭하여 에디터에서 게임을 플레이합니다.
최종 결과
키보드의 1, 2, 3 키를 누르면 레벨의 각 캐릭터가 전환됩니다.