2011-03-17 57 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; 

} 

我想調用敵人[]數組中的所有對象。這樣所有的敵人都可以看到對方。但我不想讓他們看到他們自己。我使用GameObject.FindGameObjectsWithTag來填充另一個腳本中的數組。

+0

它是什麼,你是存儲在標籤? – Pieter888 2011-03-17 12:38:41

+0

我使用列表敵人; – Amacoder 2011-03-17 12:40:15

+0

我不完全瞭解您的問題的上下文,所以我不會提供給您一個完整的答案或代碼片段,但您可以嘗試檢查是否在某種程度上敵對ID或某個其他唯一標識符等於他自己的同時調用所有敵人[]'中的對象。希望能對你有所幫助。 – Pieter888 2011-03-17 14:51:38

回答

1

你一些不成熟的優化:

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

它的工作原理! :D非常感謝你的時間,並幫助我的男人:) – Amacoder 2011-03-18 10:10:13

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的屬性)的值,因爲該查找也會變得很昂貴。 – Calvin 2011-03-17 17:19:43

+0

感謝隊友:)我會試試這個,當我有時間,我會讓你知道,如果它的作品! – Amacoder 2011-03-17 17:28:11

相關問題