2017-01-25 8 views
2

私の問題は、現在のウェイポイントに向かって移動しようとすると、奇妙な方向に向かい、パスに完全に従わないということです。AIは、ウェイポイントに従うときに奇妙な方向に向くUNITY

IEnumerator FollowPath() { 
    Vector3 currentWaypoint = path[0]; 

    while (true) { 
     //transform.LookAt (currentWaypoint); 
     if (transform.position == currentWaypoint) { 

      PathRequestManager.RequestPath(transform.position,target.position,OnPathFound); 
      targetIndex=0; 
      targetIndex ++; 
      //Debug.Log(currentWaypoint); 

      if (targetIndex >= path.Length) { 
       targetIndex =0; 
       path = new Vector3[0]; 
       //yield break; 
      } 
      currentWaypoint = path[targetIndex]; 
     } 

     transform.LookAt (currentWaypoint); 
     transform.position = Vector3.MoveTowards(transform.position,currentWaypoint,speed * Time.deltaTime); 

     yield return null; 
    } 
} 

現在、*路線検索を使用しています。 https://github.com/SebLague/Pathfinding

現在のウェイポイントに到達すると、その方向がランダムに変更されるか、またはランダムに方向に直面し、次のウェイポイントを通過しません。コード内のこの部分では(Screenshot)

答えて

1

targetIndexは常にので、基本的に、それはさらに最初のウェイポイントよりも行くことは決してありません1

targetIndex=0; 
targetIndex ++; 

と評価されます。

また、私の代わりに

if (transform.position == currentWaypoint) 

のあなたが代わりにこれを行うだろうことをお勧めします:

float threshold = 0.1f;    // Adjust to your preference 
if ((currentWaypoint - transform.position).sqrMagnitude < threshold) 

私はMoveTowardsはおそらく正確にターゲットベクトルと意志に到達オーバーシュートまたはことができないと思うので、これは、ターゲットベクター上をホバリングしたときに、手を回り、方向を大幅に変えます。

+0

方向がないとき、または位置が静的であるときに他のウェイポイントに行くのを忘れてしまった。しかし、私は彼があまりにも見ている方向に追加すると、約10秒間不思議な方向に向かい、次のウェイポイントに行くか、時には次のウェイポイントに行かない。 –

+0

'targetIndex = 0;を取り除きます – maksymiuk

+0

私はあなたの提案を試しましたが、ウェイポイントに到達した後でもまだ奇妙な方向に向いています。私は何とかエラーがどこから来たのか分かっていますが。アニメーションとこのコード行 "transform.LookAt(currentWaypoint);"から来ます。私はアニメーションを取り除こうとしましたが、どういうわけかそれは次のウェイポイントに行きます。どうすればこの問題を解決できますか?アニメーションは静的な実行のみを持ちます。アイドルや何もないので、アニメーションのみを実行します。 –

関連する問題