2016-08-19 51 views
2

我最近一直在關注YouTube上的「Brackeys」的塔防遊戲教程,我一直遵循它的單詞,但有錯誤(這是下面的照片),不會讓我的敵人預製物在場景中移動。預製件全部產卵,但都卡在一個地方。 任何幫助將不勝感激敵方腳本在我的塔防遊戲c上無法正常工作#

感謝,米奇

using UnityEngine; 

public class Enemy : MonoBehaviour 
{ 
    public float speed = 10f; 
    private Transform target; 
    private int wavePointIndex = 0; 

    // Use this for initialization 
    void Start() 
    { 
     // An error pops up on the first frame for this line of code below 
     target = Waypoints.points[0]; 
    } 

    // Update is called once per frame 
    void Update() 
    { 
     // This is the main source of the error below. 
     Vector3 dir = target.position - transform.position; 
     transform.Translate (dir.normalized * speed * Time.deltaTime, Space.World); 

     if (Vector3.Distance (transform.position, target.position) <= 0.4f) 
     { 
      GetNextWayPoint(); 
     } 
    } 

    void GetNextWayPoint() 
    { 
     if (wavePointIndex >= Waypoints.points.Length - 1) 
     { 
      Destroy (gameObject); 
      return; 
     } 
     wavePointIndex++; 
     target = Waypoints.points[wavePointIndex]; 
    } 
} 

error description in unity Enemy prefab that has script on it

回答

1

的圖像你在編輯器中上傳了您命名節目Enemy腳本EnemyMover。這不是一個問題,但您應該總是發佈腳本名稱,因爲它在您的場景中以避免混淆。

根據你的,這行代碼的問題是:target = Waypoints.points[0];

問題是pointsTransform數組,未初始化。

有三個可能出現的問題:

。你的Waypoint腳本沒有連接到航點遊戲對象。 選擇Waypoints GameObject,將Waypoint腳本拖入其中。它必須附加到您的Waypoint GameObject以便它啓動 points數組變量。

。您的Waypoint腳本附加到多個GameObjects。確保Waypoint腳本僅附加到一個GameObject,並且該GameObject是所有路標的父級。這個GameObject被命名爲Waypoints

要驗證這一點,請從項目選項卡中選擇Waypoint腳本,右鍵單擊它並單擊在場景中查找參考。它會向您顯示Waypoint腳本所附的每個GameObject。如果它附加到任何未命名爲Waypoint的GameObject,請從該GameObject中刪除該腳本。

。您的Waypoint腳本中的函數將在您的Enemy腳本之前調用。 Unity有時會發生這種情況。

轉到編輯 - >項目設置 - >腳本執行順序。將Waypoint腳本拖動到順序中,然後將Enemy腳本拖入或拖動。點擊應用。

enter image description here

第二問題的解決方案#3是去除static關鍵字,並使用GameObject.Find("Waypoints");GetComponent<Waypoint>();和。您可以找到腳本herehere的完整腳本。請注意,如果您遵循刪除static關鍵字的第二種解決方案,則可能很難遵循本教程的其餘部分。

+0

第一個解決方案解決了我的問題! 它總是很容易的問題,最糟糕的是與你最好的 –

+0

。它可能是其中之一。不要忘記接受答案。 – Programmer

+0

我投了贊成票,但它說我沒有足夠的積分 纔剛剛開始使用這個今天 謝謝一堆 –

相關問題