チェック ポイントとは、パス フォローイングシステムによって検証されるまで、到達したとみなされない、パスに沿ったイベントです。チェック ポイントとして、任意の PathEvent をマークすることができます。Bot がターゲット ポイントとしてチェック ポイントを選択すると、チェック ポイントの検証が済むまで、PathFollower はターゲット ポイントからパスに沿って前に進むことはありません。
チェック ポイント システムの一般的な使用事例は、キャラクタがある種のイベントに一定距離まで近づかない限り、パスに沿って前に進めないようにすることです。ただし、システムを拡張して、任意のイベントをチェック ポイントとしてマークしたり、チェック ポイントに達したことを確認するために使用される基準をカスタマイズすることができます。
PathEvents のバックグラウンド情報とその取得方法については、「PathEvent を監視する」を参照してください。
デフォルトでは、ユーザが IPathEventListObserver のカスタム クラスを提供しない場合(「PathEvent を監視する」を参照)、Bot は自動的に DefaultPathEventListObserver クラスのインスタンスを使用するように設定されます。次のオブザーバは、チェック ポイントとして設定されます。
各 Bot は、IPositionOnPathValidator インタフェースを実装するクラスのインスタンスを使用して、チェック ポイントに到達したタイミングを判断します。ユーザ独自のインプリメンテーションを指定しない場合は、デフォルトでは、Bot が自動的に PositionOnPathCheckPointValidator のインスタンスを使用するように設定されます。このデフォルトのインプリメンテーションでは、Bot が Bot に対して設定された 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 からクラスを抽出し、親クラス内でメソッドの実装を呼び出さない限り、チェック ポイントとして特定タイプのイベントをマーキングするデフォルトの動作が自動的に変更されます(上記参照)。
キャラクタに対してチェック ポイントの検証をカスタマイズするには、2 つの方法があります。
実行する操作が、チェック ポイントに無事に達したかどうかを決定するしきい値の設定だけの場合は、PathProgressConfig::m_checkPointRadius 設定パラメータに新しい値を設定します。「パス フォローイングをカスタマイズする」を参照してください。
チェック ポイントに達したことを検証するために、シンプルな距離のしきい値ではなく、独自のカスタム基準を使用するには、次の手順を実行します。