私は NavMesh パスファインディング ソリューションを使用して AI を実行していますが、いくつかの制限があるため (彫刻されたオブジェクトが近づいたときにテレポートするなど)、NavMeshAgent を使用したくありません。
したがって、NavMesh.CalculatePath() のパス上で Rigidbody を移動して、ある種の融合を行いました。これは今のところ非常にうまく機能していますが、パス上の OffMeshLinks を検出するのに問題があります (Vector3 の単なる配列であるため)。
上記のように NavMesh.Raycast() を使用して少し「だます」ことができますが、常に機能しているわけではなく、1 つではない OffMeshLink を検出することもあります。
NavMeshHit hit;
//Raycast between two corners of a path, because OffMeshLink are most of the time over a hole
if (NavMesh.Raycast(_pathCorners[0], _pathCorners[1], out hit, NavMesh.AllAreas))
{
//If the hit position is really close to the corner, it's surely a offmeshlink generate from the NavMesh
//Or if the second corner is higher than the first one, it's surely a offmeshlink I generate myself
if ((hit.position - _pathCorners[0]).sqrMagnitude < 1
|| _pathCorners[0].y < _pathCorners[1].y)
{
ActivateJump(_pathCorners[0], _pathCorners[1]);
}
}
前もって感謝します :)