私は現在 Unity3D ゲームに取り組んでおり、ナビゲーション メッシュ エージェントでいくつかの問題が発生しました。私の現在の目的は、敵を最も近いプレイヤー (3 人になる予定) に向かって歩かせることです。敵をスポーンすると、どのプレイヤーが最も近いかをチェックします。これは、以下のコードに見られるように、プレーヤーに向かって残りの距離で行われます
agent.CalculatePath(player.transform.position, path);
agent.Stop();
agent.SetPath(path);
if (distance > agent.remainingDistance)
{
distance = agent.remainingDistance;
playerToFollow = player;
}
このスニペットでは、距離は '<code>float.MaxValue' で開始され、(プレイヤーが現在の距離よりも近づくたびに、ゲームオブジェクトである '<code>playerToFollow' として設定されます。
問題はここにあります: プレーヤーへのパスに 0 または 1 つのコーナーがある場合。ナビゲーション メッシュ エージェントは、プレイヤーに向かってその道を歩き始めます。しかし…パスに複数のコーナーが含まれる場合は常に距離が計算されないため、 が返されagent.remainingDistance == float.PositiveInfinity
ます。
これは、距離 ( float.MaxValue
) が残りの距離 ( float.PositiveInfity
) より小さいことを意味します。
私が忘れる可能性のあるものはありますか?私にお知らせください。いつでも詳細をお知らせできます。