检查点是沿路径的事件,只有在验证检查点之后,路径跟随系统才视为到达。您可以将任何 PathEvent 标记为检查点。一旦人物采用检查点作为其目标点,则只有在验证检查点之后,PathFollower 才会沿路径推进目标点。
检查点系统的典型用例是在某些类型的事件的给定距离内强制角色靠近,然后才能沿其路径继续前进。但是,您可以使用并扩展该系统以标记想要作为检查点的任何事件,并自定义用于验证已到达检查点的条件。
有关 PathEvent 的背景信息及检索方式,请参见监视 PathEvent。
默认情况下,如果未提供自己的 IPathEventListObserver 的自定义类(请参见监视 PathEvent),Bot 将自动设置为使用 DefaultPathEventListObserver 类的实例。此观察器将下列事件设置为检查点:
每个人物均使用用于实现 IPositionOnPathValidator 接口的类实例来确定到达其检查点的时间。默认情况下,如果未提供您自己的自定义实现,人物将自动设置为使用 PositionOnPathCheckPointValidator 的实例。仅当人物比为人物设置的 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 派生类,并在父类中调用方法实现,否则更改默认观察器将更改将某些类型的事件自动标记为检查点的默认行为(见上文)。
如果要使用您自己的自定义条件来验证检查点已到达,而非使用简单的距离阈值,请执行以下操作: