2014-06-22 55 views
1

我剛剛開始使用Unity和C#,並且我試圖在玩家之後讓敵人追逐。敵人發現和追逐玩家,我使用下面的代碼:Unity C#使用標籤查找GameObjects

public GameObject attackingg; 
public Entity attacking; 
public int distance; 

private bool canAttack; 

void Start() { 
    canAttack = true; 
    if(attackingg = null){ 
     attackingg = GameObject.FindGameObjectWithTag("Player"); 
     attacking = attackingg.GetComponent<Entity>(); 
    } 
} 

void Update() { 

    if(attacking.rigidbody2D.transform.position.y>rigidbody2D.transform.position.y - distance) 
    { 
     rigidbody2D.transform.position += Vector3.up * speed * Time.deltaTime; 
    } 
    if(attacking.rigidbody2D.transform.position.y<rigidbody2D.transform.position.y - distance) 
    { 
     rigidbody2D.transform.position += Vector3.down * speed * Time.deltaTime; 
    } 
    if(attacking.rigidbody2D.transform.position.x>rigidbody2D.transform.position.x+ distance) 
    { 
     rigidbody2D.transform.position += Vector3.right * speed * Time.deltaTime; 
    } 
    if(attacking.rigidbody2D.transform.position.x<rigidbody2D.transform.position.x - distance) 
    { 
     rigidbody2D.transform.position += Vector3.left * speed * Time.deltaTime; 
    } 
    if (Vector2.Distance (rigidbody2D.transform.position, attacking.transform.position) <= distance && canAttack) { 
     attackEntity(); 
     StartCoroutine(waitForAttack()); 

    } 
} 

當運行遊戲時,我得到以下錯誤:

NullReferenceException: Object reference not set to an instance of an object AttackingMob.Update() (at Assets/Code/Entities/Mobs/AttackingMob.cs:22)

爲什麼會出現這種情況,我可以做什麼解決我的問題?我非常感謝任何幫助,謝謝。

回答

2

您需要使用「播放器」標籤標記播放器。您必須通過Unity中的編輯器窗口執行此操作。

您遇到的另一個問題是您試圖分配空值而不是實際檢查空值。

if(attackingg = null) 
{} 

應該是:

if(attackingg == null) 
{}