플레이어 스타트 액터

플레이어 스타트 액터를 사용하여 플레이어의 시작 위치를 구성하는 방법을 살펴봅니다.

추가 참고

플레이할 수 있는 캐릭터를 사용하는 언리얼 엔진 프로젝트의 경우 플레이어 스타트(Player Start) 액터를 사용하여 게임 월드 내에서 각 플레이어 캐릭터가 런타임에 스폰될 위치를 제어할 수 있습니다.

플레이어 스타트 액터는 깃발과 플레이어가 스폰될 때 향하는 방향을 나타내는 화살표가 있는 게임 컨트롤러 아이콘의 형태를 하고 있습니다.

플레이어 스타트 액터를 선택하면 두 개의 추가 컴포넌트가 표시됩니다. 하나는 게임 내에서 액터가 차지하는 물리적 공간을 시각적으로 나타내는 캡슐이고, 다른 하나는 트랜스폼 위젯입니다.

레벨에 플레이어 스타트 액터가 없다면 플레이어는 항상 월드의 0,0,0 좌표에서 시작하게 됩니다.

플레이어 스타트 액터 배치하기

플레이어 스타트 액터는 다른 액터와 마찬가지로 드래그 앤 드롭하여 레벨에 배치할 수 있습니다.

레벨에 플레이어 스타트 액터를 여러 개 배치하고 블루프린트 또는 C++를 사용하여 어떤 플레이어 스타트를 플레이어 스폰 위치로 사용할지 제어할 수 있습니다.

플레이어 스타트 액터를 배치하려면 다음 단계를 따릅니다.

  1. 메인 툴바 에서 빠른 추가(Quick Add) 버튼을 클릭합니다.

  2. 기본(Basic) > 플레이어 스타트(Player Start) 를 선택합니다.

  3. 플레이어 스타트 액터를 클릭하고 '레벨 뷰포트(Level Viewport)'에 드래그합니다.

플레이어 스타트 액터를 사용하여 플레이어를 스폰하는 경우 플레이어 캐릭터의 위치 및 회전이 액터의 위치 및 회전과 일치하게 됩니다. 플레이어를 스폰할 때 플레이어가 특정 대상을 바라보게 하려면 플레이어 스타트의 화살표 컴포넌트가 플레이어가 바라보게 하려는 방향을 가리키고 있어야 합니다.

레벨에 하나 이상의 플레이어 스타트 액터가 있다면 플레이어는 매번 랜덤한 플레이어 스타트에서 시작하게 되며, 방해받지 않는 플레이어 스타트 액터에 우선순위를 둡니다.

플레이어 스타트 BADsize 경고

플레이어 스타트 액터를 배치하거나 움직일 때 빨간색 테두리가 쳐진 흰색 라벨과 BADsize 라는 텍스트가 표시되는 경우가 있습니다.

이 경고는 플레이어 스타트 액터가 레벨 내의 프롭 또는 터레인과 같은 다른 무언가와 겹치거나 교차하는 경우 표시됩니다. 이 경고를 해결하려면 플레이어 스타트의 캡슐 컴포넌트가 다른 요소와 겹치거나 교차하지 않을 때까지 플레이어 스타트를 이동시키면 됩니다.

블루프린트에서 플레이어 스타트 액터 사용하기

언리얼 엔진에는 플레이어 스타트 액터 작업에 함께 사용할 수 있는 여러 블루프린트 노드가 있습니다. 이러한 노드는 플레이어를 플레이어 스타트 액터의 위치에 리스폰시키거나, 다양한 조건에 따라 플레이어를 다른 플레이어 스타트에 스폰시키는 등 다양한 시나리오에서 유용합니다.

플레이어 스타트 액터 작업을 위한 다음과 같은 노드를 게임 모드(Game Mode) 블루프린트에서 사용할 수 있습니다.

  • FindPlayerStart: 레벨에 IncomingName 프로퍼티에서 정의된 특정 태그 를 가지고 있는 플레이어 스타트 액터를 찾습니다. 플레이어 스타트 액터의 태그는 액터의 디테일(Details) 패널에서 설정할 수 있습니다.

    FindPlayerStart node

  • Restart Player at Player Start: 지정된 플레이어 스타트 액터를 사용하여 플레이어를 리스폰합니다.

    Restart Player at Player Start node

아래 스크린샷에는 이러한 노드를 사용하여 E 키를 누르면 TheStartIWant 태그가 지정된 플레이어 스타트의 위치에서 플레이어를 재시작하는 방법의 예시가 나와 있습니다. 위의 예시를 직접 시도하려면 이 노드를 프로젝트의 게임 모드 블루프린트에서 다시 생성해보세요.

PIE에서 플레이어 스타트 무시하기

언리얼 에디터에서 에디터에서 플레이(Play in Editor)를 사용하여 게임을 미리 볼 때, 플레이어 스타트 액터의 위치에 캐릭터를 스폰하지 않고 대신 레벨의 특정 위치로 먼저 이동한 다음 해당 위치에서 PIE 세션을 시작해야 할 때가 있습니다.

이 경우, 다음과 같은 두 가지 방법을 사용할 수 있습니다.

  • '플레이 옵션(Play Options)' 메뉴의 플레이어 스폰 위치(Spawn Player At) 섹션에서 현재 카메라 위치에서 스폰할지 또는 기본 플레이어 스타트 위치에서 스폰할지 선택할 수 있습니다.

    ![Play Options menu](play-options-spawn-player-at.png)
    ]

  • '레벨 뷰포트'에서 원하는 시작 위치를 우클릭 하고 컨텍스트 메뉴에서 여기에서 플레이(Play From Here) 를 선택합니다.

플레이어 스타트 동작 커스터마이징하기

대부분의 플레이어 스타트 액터 동작은 게임 모드 베이스(Game Mode Base) 클래스(AGameModeBase)의 FindPlayerStart()ChoosePlayerStart() 함수 내에 구현되어 있습니다. 다른 행동을 원하는 경우에는 프로젝트 내의 게임 모드 클래스에서 이러한 함수 중 하나 또는 모두를 오버라이드할 수 있습니다.

예를 들어 이 페이지의 윗부분에서 설명한 대로 함수가 플레이어 스타트 액터를 랜덤으로 선택하도록 하는 대신, 다음과 같이 다른 기준에 따라 액터를 선택하도록 할 수 있습니다.

  • 플레이어가 도달한 마지막 체크포인트에서 가장 가까운 플레이어 스타트 액터

  • 플레이어의 팀메이트의 현재 위치에서 가장 가까운 플레이어 스타트 액터

  • 시작 팀 배정 등 플레이어 또는 캐릭터와 관련된 기타 어트리뷰트

FindPlayerStart()ChoosePlayerStart() 함수 모두 'Player' 파라미터에서 스폰되는 플레이어의 컨트롤러에 전달됩니다. 필요한 경우, 이 레퍼런스를 사용하여 구현 결과물에서 플레이어에 대한 정보에 액세스할 수 있습니다.

FindPlayerStart

플레이어의 새로운 시작 위치가 필요할 때마다 엔진이 FindPlayerStart() 를 자동으로 호출합니다. 해당 플레이어가 이전에 시작 위치를 표시하는 액터와 함께 스폰된 경우 이 함수는 해당 액터를 반환합니다. 그렇지 않으면 ChoosePlayerStart() 를 호출하여 액터를 선택합니다.

플레이어가 게임에 처음 참가할 때 선택했던 것과 다른 시작 위치를 결정하려는 경우 오버라이드하면 좋습니다.

FindPlayerStart() 는 'Incoming Name' 파라미터도 허용합니다. 이 이름을 제공하면 디폴트 구현은 '플레이어 스타트 태그(Player Start Tag)' 세팅에서 일치하는 스트링이 할당된 플레이어 스타트 액터를 찾습니다. 일치하는 플레이어 스타트 액터가 발견되면 해당 액터를 반환합니다. 이 행동은 게임플레이 코드에서 FindPlayerStart() 를 호출하는 경우에 유용할 수 있습니다. 하지만 엔진은 FindPlayerStart() 를 내부에서 호출할 때 대부분의 경우 'Incoming Name'을 제공하지 않습니다.

ChoosePlayerStart

ChoosePlayerStart() 의 디폴트 구현은 플레이어 스타트 액터를 랜덤으로 선택하며, 다른 지오메트리로 가로막히지 않은 액터를 선호합니다.

FindPlayerStart() 의 디폴트 행동을 유지하고 싶지만 커스텀 로직을 사용하여 플레이어가 게임에 처음 참가하는 위치를 결정하고 싶을 때 오버라이드하면 좋습니다.

예시

다음 FindPlayerStart() 구현은 게임 모드 베이스에서 파생된 블루프린트 클래스에서 나온 것입니다. 현재 게임 스테이트를 가져오고 해당 게임 스테이트에 저장된 Checkpoint Location이라는 레퍼런스 위치를 찾습니다. 게임 스테이트에서 해당 레퍼런스 위치를 가져올 수 있으면 해당 위치에 가장 가까운 플레이어 스타트 액터를 반환합니다. 그렇지 않으면 베이스 클래스에서 원래 구현을 호출하여 플레이어 스타트 액터를 랜덤으로 선택하는 방식으로 돌아갑니다.

게임 모드와 게임 스테이트에 대한 자세한 내용은 게임 모드와 게임 스테이트 페이지를 참고하세요.

태그
언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
취소