2011-03-17 3 views
0

배열의 모든 객체를 호출 할 수 있습니까? 아니면 번호 만 사용하고 있습니까?다른 태그를보고 자신의 태그가 아닌 것을 확인하십시오

public void Update() 
{ 
    Targetting ge = (Targetting)target.GetComponent("Targetting"); 
    enemies = ge.targets; 

    float attackDistanceP = Vector3.Distance(target.transform.position, transform.position); 

    foreach (Transform enemy in enemies) 
    { 
     float enemyDistance = Vector3.Distance(enemy.transform.position, transform.position); 
     print(enemyDistance); 
    } 

    Debug.DrawLine(transform.position, waypointPosition, Color.black); 

    if (attackDistanceP < 8) 
     disableNow = true; 

    if (attackDistanceP > 8) 
     disableNow = false; 

} 

enemies [] 배열에있는 모든 객체를 호출하고 싶습니다. 그래서 모든 적들은 서로를 볼 수 있습니다. 그러나 나는 그들 스스로를보고 싶지 않습니다. 게임 객체 .FindGameObjectsWithTag를 사용하여 다른 스크립트의 배열을 채우십시오.

using System.Collections.Generic; 

public Transform trans; 
Targetting ge; 

void Start() { 
    trans = transform; 
    ge = target.GetComponent<Targetting>(); 
} 

void Update() { 
    enemies = ge.targets; 

    float attackDistanceP = (target.trans.position - trans.position).sqrMagnitude; // save a square root 

    foreach(Transform enemy in enemies){ 
     if (enemy == trans) continue; // skip me 

     float enemyDistance = (enemy.trans.position - trans.position).sqrMagnitude; // save a square root 
     print(enemyDistance); 
    } 

    Debug.DrawLine (trans.position, waypointPosition, Color.black); 

    if(attackDistanceP < 64) 
     disableNow = true; 

    if(attackDistanceP > 64) 
     disableNow = false; 
} 
+0

당신이 태그에 저장하는 것이 무엇인가 – Pieter888

+0

리스트 적을 사용하고 있습니다. – Amacoder

+0

전체 컨텍스트 또는 코드 조각을 제공하지 않으므로 문제의 상황을 완전히 이해하지 못하고 있지만 적 ID 또는 다른 고유 식별자가 어떻게 든 자기 자신과 같은지 확인해 볼 수 있습니다. 적 [] 안에있는 사물들. 너를 조금 도와줬으면 좋겠다. – Pieter888

답변

1

당신을 위해 일부 조기 최적화

?
+0

그것은 작동합니다! : D 귀하의 시간을 내 주셔서 감사하고 내 남자를 도울 :) – Amacoder

1
foreach(Transform enemy in enemies){ 
    if (enemy == this.transform) continue; // skip me 

    float enemyDistance = Vector3.Distance(enemy.transform.position, transform.position); 
    print(enemyDistance); 
} 
+0

최적화 팁 : 모든 프레임에서 GetComponent를 호출하지 마십시오. 이를 Start() 메소드의 변수에 할당해야합니다. 또한 this.transform (GetComponent를 사용하는 속성 인 this.transform의 값)을 저장해야합니다.이 조회는 비용이 많이 들기 때문에 저장할 수도 있습니다. – Calvin

+0

고마워요. :) 시간이있을 때 이것을 시험해 볼 것이고, 그것이 효과가 있다면 알려 드리겠습니다. – Amacoder

관련 문제