問題ログ:「SetDestination」は、NavMeshに配置されたアクティブエージェントでのみ呼び出すことができます。



Problem Log Setdestinationcan Only Be Called An Active Agent That Has Been Placed Navmesh



質問:「SetDestination」は、NavMeshに配置されたアクティブエージェントでのみ呼び出すことができます。

原因:NavMeshAgentコンポーネントがナビゲートされているオブジェクトが、Navmeshナビゲーショングリッドから離れすぎているため、「NavMeshAgent.SetDestination」がナビゲーションターゲットポイントの設定に失敗しました



解決策:ナビゲーションターゲットポイントを設定する前に、「NavMeshAgent.isOnNavMesh」を使用して判断できます。戻り値がTureの場合、「NavMeshAgent.SetDestination」、戻り値がFalseの場合、現在のNavMeshAgentがナビゲーショングリッド上になく、使用できることを意味します。ワープ '位置を修正しました。

さらに、「NavMesh.SamplePosition」を使用して、地図内のポイントがナビゲーショングリッドNavMesh内にあるかどうかを検出することもできます。



public bool TestNavigation() { if (navMeshAgent.isOnNavMesh) { NavMeshHit navigationHit if (NavMesh.SamplePosition(targetPosition, out navigationHit, 15, navMeshAgent.areaMask)) return navMeshAgent.SetDestination(navigationHit.position) return false } else { return navMeshAgent.Warp(warpPosition) } }