• [작업] 2018.06.28 PM 04:51

게시물 주소 FONT글자 작게하기 글자 키우기

  1. Transform GetClosestEnemy(Transform[] enemies)
  2. {
  3.     Transform tMin = null;
  4.     float minDist = Mathf.Infinity;
  5.     Vector3 currentPos = transform.p-osition;
  6.     foreach (Transform t in enemies)
  7.     {
  8.         float dist = Vector3.Distance(t.p-osition, currentPos);
  9.         if (dist < minDist)
  10.         {
  11.             tMin = t;
  12.             minDist = dist;
  13.         }
  14.     }
  15.     return tMin;
  16. }

가장 가까운 오브젝트를 구한다.

 

지금까지 단순히 오브젝트 배열을 Vector3.Distance로 비교하여 특정 조건만 갖추어지면. 다음단계로 넘어가도록 하였는데

좀 더 체계적이고 구체적인 구현을 위해 앞으로 이렇게 해야겠다.

작동원리는 단순하다. 배열 내 오브젝트 거리를 구하는것은 이전과 같으며, 이때 거리 값을 처음에는 무한(Infinity)으로 지정한다.

값이 무한이므로 배열 중 거리가 무한값을 넘는 오브젝트는 존재하지 않아 자연스레 반복이 성립한다.

무한 다음으로 배열중 어느 한 오브젝트의 거리값를 무한값이 지정된 변수에 대입하고 다시금 거리를 반복하여 계산.

만약 방금 넣은 오브젝트의 거리보다 더 작은 것이 없다면, 이 오브젝트의 거리가 가장 작은것이 되므로 가장 가까운 거리의 오브젝트가 되겠다.

 

댓글 : 0 개
친구글 비밀글 댓글 쓰기