게임의 여러 플레이가능 캐릭터를 전환하거나, 캐릭터가 (차량, 비행기, 탱크 등의) 비히클에 탑승하도록 하거나, 별도로 제어되는 다른 폰(플레이어가 제어할 수 있는 일체형 기관총같은 것)을 제어하도록 하려는 경우, 거기에 입력 정보를 전달하기 위해서는 그 캐릭터 또는 폰 을 빙의 (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 키를 누르면 레벨의 각 캐릭터가 전환됩니다.
'언리얼수업 > 최종프로젝트' 카테고리의 다른 글
마우스클릭으로 포제스하기 Possess (0) | 2024.03.18 |
---|---|
5초간 피해 계산하기 (0) | 2024.03.08 |
Moving Actor - TimeLine Lerp (0) | 2024.02.28 |
NAV LINK PROXY (1) | 2024.02.28 |
내비게이션 메시 수정 준비 가이드 AI Move (0) | 2024.02.28 |