2017-04-24 14 views
1

私はレベルがあり、そのフロアの高さはほとんどゼロですが、いくつかのセクションはゼロより下になるように下がっています。私はNavMeshAgentの行き先をランダムに設定するためのオブジェクトに添付された簡単なスクリプトを持っています。 0のYポジションのフロア上を移動するときは正常に動作しますが、オブジェクトをレベルの下位に配置するとオブジェクトは配置されず、NavMeshAgent.SetDestinationは常にfalseを返します。ここでNavMeshAgentはY位置では動作しません<0

はレベルの落書きです:

enter image description here

は、ここでは、コードです:

void Start() { 
    nav = GetComponent<NavMeshAgent>(); 
    StartCoroutine(Move()); 
} 

IEnumerator Move() 
{ 
    while (true) 
    { 
     Vector3 randomPoint = transform.position + new Vector3(Random.Range(0, roamRadius), 
      transform.position.y, Random.Range(0, roamRadius)); 

     Debug.DrawLine(transform.position, randomPoint, Color.green, 0.5f); 

     Debug.Log(nav.SetDestination(randomPoint)); 

     yield return new WaitForSeconds(changeDirectionSpeed + Random.Range(0, changeDirectionSpeedRandom)); 
    } 

} 

私はNavMesh.SamplePositionと私のランダムなベクトルに最も近い位置をチェックしようとしました。位置は常に上位レベルにありますが、下位レベルにはありません。

さまざまな設定を使用して、NavMeshをエージェントの半径0.1まで効果的にベイク処理しました。私は下位レベルの場所にNavMeshがあることを確信しており、エージェントがその上に置かれています。

答えて

0

transform.position.yを使用すると、yの位置が空になるためです。

transform.position.y + 10fからレイキャストを行い、ヒットポイントが新しい目的地になることをお勧めします

関連する問題