체크 포인트 사용

체크 포인트는 경로를 따라 존재하는 이벤트로, 경로 따르기 시스템에서는 이 체크 포인트를 확인해야 해당 지점에 도달했다고 간주합니다. PathEvent체크 포인트로 표시할 수 있습니다. Bot이 체크 포인트를 대상점으로 채택하면 PathFollower는 해당 체크 포인트를 확인할 때까지 경로에서 더 멀리 대상점을 앞으로 이동하지 않습니다.

체크 포인트 시스템의 일반적인 사용 예는 경로를 계속 따라 가기 전에 캐릭터가 특정한 이벤트 종류의 지정된 거리 내로 접근하도록 하는 것입니다. 그러나 시스템을 사용하고 확장하여 원하는 이벤트를 체크 포인트로 표시하고 체크 포인트에 도달했는지 확인하기 위해 사용하는 기준을 사용자 정의할 수 있습니다.

PathEvents에 대한 배경 정보 및 검색 방법은 PathEvent 모니터링을(를) 참조하십시오.

기본 체크 포인트 동작

체크 포인트 식별

기본적으로 IPathEventListObserver(PathEvent 모니터링 참조)의 자체 사용자 정의 클래스를 제공하지 않는 경우 BotDefaultPathEventListObserver 클래스의 인스턴스를 사용하도록 자동 설정됩니다. 이 확인자는 다음을 체크 포인트로 설정합니다.

  • NavGraph 정점에 링크된 각 이벤트
  • NavMesh 경계 밖에서 교차하는 경로 가장자리에 NavMesh를 연결하는 각 이벤트
  • NavMesh 경계 밖에 있는 경로의 각 노드

체크 포인트 확인

BotIPositionOnPathValidator 인터페이스를 구현하는 클래스의 인스턴스를 통해 해당 체크 포인트에 도달한 시기를 확인합니다. 기본적으로 자체 사용자 정의 구현을 제공하지 않는 경우 BotPositionOnPathCheckPointValidator의 인스턴스를 사용하도록 자동 설정됩니다. 이 기본 구현은 BotBot에 설정된 PathFollowerConfig::m_checkPointRadius 매개변수 값보다 체크 포인트 이벤트에 더 가까울 때만 체크 포인트에 도달했다고 간주합니다.

자체 체크 포인트 식별

PathEvent::SetCheckPointStatus() 메서드를 호출하여 PathEvent를 체크 포인트로 설정할 수 있습니다.

// make the event into a check point
m_pathEvent->SetCheckPointStatus(Kaim::CheckPointStatus_EventIsACheckPoint);

// make the event not a check point
m_pathEvent->SetCheckPointStatus(Kaim::CheckPointStatus_EventIsNotACheckPoint);

캐릭터의 PathEventList에서 검색한 이벤트에 대해 언제나 이 작업을 수행할 수 있습니다.

체크 포인트 사용 방법에 따라 IPathEventListObserver의 자체 클래스를 만들면 새 경로가 만들어질 때마다 자동으로 체크 포인트 표시를 할 수도 있습니다. 인터페이스 구현 및 설정에 대한 자세한 내용은 PathEvent 모니터링을(를) 참조하십시오. 구현에 동일한 코드를 포함하지 않거나 DefaultPathEventListObserver에서 클래스를 파생하여 상위 클래스에서 메서드 구현을 호출하지 않는 한, 위에서 보는 것처럼 기본 확인자를 바꾸면 특정 유형의 이벤트를 체크 포인트로 자동 표시하는 기본 동작이 변경됩니다.

체크 포인트 확인 사용자 정의

캐릭터에 대한 체크 포인트를 확인하는 방식을 사용자 정의하는 방법은 두 가지가 있습니다.

거리 임계값

성공적으로 체크 포인트에 도달했다고 생각되는 임계값을 구성하려는 경우 PathProgressConfig::m_checkPointRadius 구성 매개변수에 새 값을 설정합니다. 경로 따르기 사용자 정의을(를) 참조하십시오.

사용자 정의 기준

간단한 거리 임계값을 사용하지 않고 체크 포인트에 도달했는지 확인하는 데 자체 사용자 정의 기준을 사용하려는 경우:

  1. IPositionOnPathValidator 인터페이스를 구현하는 자체 클래스를 작성합니다. 여기서 지정된 Bot이 지정된 체크 포인트에 도달했는지 여부를 테스트하는 논리를 설정합니다.
  2. BaseNavigationProfile 또는 NavigationProfile 클래스에서 파생되는 클래스를 직접 작성하고 IPositionOnPathValidator 클래스의 인스턴스에 대한 포인터를 반환하도록 BaseNavigationProfile::GetSharedPositionOnPathValidator()를 구현합니다.
  3. NavigationProfile을 사용하도록 WorldBots를 설정합니다. 자세한 내용은 경로 따르기 사용자 정의을(를) 참조하십시오.