던전은 룸 여러 개로 구성되어 있는데 한 룸에서 스폰된 몬스터는 다른 룸으로 넘어가지 못하게 NavMesh가 설정되어 있다. 하지만 몬스터가 플레이어를 SetDestination으로 추적하면 가지 못하는 경로이지만 계속 가려고 움직인다.
추적 상태에서 플레이어를 추적할 수 있는 경로인지 확인하고 유효한 경로일 때만 플레이어를 향해 이동할 수 있도록 NavMeshPath, path Status, CalculatePath, SetPath, ResetPath를 활용하여 SetDestination을 대체하였다.
private void SetChasingPath()
{
NavMeshPath path = new NavMeshPath();
stateMachine.Monster.agent.CalculatePath(stateMachine.Target.transform.position, path);
if (path.status == NavMeshPathStatus.PathComplete)
{
stateMachine.Monster.agent.SetPath(path);
StopAnimation(HashDataManager.idleParameterHash);
StartAnimation(HashDataManager.runParameterHash);
}
else
{
stateMachine.Monster.agent.ResetPath();
RotateToTarget();
StopAnimation(HashDataManager.runParameterHash);
StartAnimation(HashDataManager.idleParameterHash);
}
}