1

私は 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]);
    }
}

前もって感謝します :)

4

0 に答える 0