2017-01-25 5 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

현재 웨이 포인트에 도달하면 방향이 무작위로 변경되거나 임의로 방향을 향하고 다음 웨이 포인트를 통과하지 않습니다.

targetIndex=0; 
targetIndex ++; 

1 그래서 기본적으로는 처음 웨이 포인트보다 더 가지 않을 것이다에

답변

1

(Screenshot) 코드에서이 부분에서 targetIndex은 항상 평가합니다.

또한

, 내가 대신

if (transform.position == currentWaypoint) 

의를 추천 할 것입니다 대신이 작업을 수행 할 것입니다 : 내가 MoveTowards 가능성이 오버 슈트 여부를 정확히 대상 벡터에 도달하고 의지 할 수 있다고 생각하기 때문에

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

이것은 대상 벡터 위로 마우스를 가져 가면 손을 대고 방향을 크게 바꿀 수 있습니다.

+0

방향이 없거나 위치가 정적 일 때 다른 웨이 포인트로가는 것을 잊어 버렸습니다. 그러나 내가 보았던 방향으로 방향을 추가했을 때 약 10 초 동안 이상한 방향을 향하고 다음 웨이 포인트로 간다. 또는 그가 현재의 웨이 포인트를보고 멈추어 서서 때때로 다음 웨이 포인트로 가지 않는다. –

+0

'targetIndex = 0;을 없애십시오. – maksymiuk

+0

나는 당신의 제안을 시도했지만, 여전히 웨이 포인트에 도달 한 후에 이상한 방향을 향하고 있습니다. 비록 내가 어떻게 든 오류가 어디에서 왔는지 알아 냈습니다. 이것은 애니메이션과이 코드 줄 "transform.LookAt (currentWaypoint);"에서옵니다. 나는 애니메이션을 제거하려고 시도했는데 어떻게 든 다음 웨이 포인트로 간다. 이 문제를 어떻게 해결할 수 있습니까? 애니메이션에는 정적 실행 만 있습니다. 그래서 그것은 유휴 또는 아무것도, 오직 애니메이션을 실행합니다. –