2017-08-04 42 views
1

基本上我做了一個非常簡單的遊戲,其中有塊掉落,我擁有基本的C#知識,但是我無法真正瞭解自己如何去做這件事。基本上我要在中間,左邊和右邊下降3個街區,你必須避免。我已經制作了一個實例化腳本,隨機在1到4秒內在每個產卵位置產生它們,但有時它會意外產生3個!我只需要檢查一下,看看是否已經在左邊和右邊產生了2個,然後在中間不產生一個,反之亦然。你們能幫我嗎?謝謝!順便說一句,這是我目前的spawn腳本。在Unity中實例化

 public GameObject spawn; 
    private float spawnTime; 

    void Start() 
    { 
     spawnTime = Random.Range(1, 5); 
     Invoke("Spawn", spawnTime); 
    } 

    void Spawn() 
    { 
     spawnTime = Random.Range(1, 5); 
     Instantiate(spawn, transform.position, Quaternion.identity); 
     Invoke("Spawn", spawnTime); 
    } 

編輯:

using UnityEngine; 

公共類randomSpawner:MonoBehaviour {

public GameObject spawn; 
private float spawnTime = 1; 


void Start() 
{ 
    if (GameObject.FindGameObjectsWithTag("Cube").Length < 2) 
    { 
     spawnTime = Random.Range(1, 3); 
     Invoke("Spawn", spawnTime); 

    } 
} 


void Spawn() 
{ 
    if (GameObject.FindGameObjectsWithTag("Cube").Length < 2) 
    { 
     spawnTime = Random.Range(1, 3); 
     Instantiate(spawn, transform.position, Quaternion.identity); 
     Invoke("Spawn", spawnTime); 

    } 
} 

}

+0

此腳本是否附加到正在生成的塊? – CNuts

+0

@CN這不是,但現在我已經將它應用到每個正在產卵的立方體上,它們會在它們落下的時候將它們重疊在一起。 – enyap

+0

我要給正在衍生出來的立方體增加一個驅逐艦腳本,如果有超過2個的話可以摧毀它們,也許這樣可以修復它,我會回發。 – enyap

回答

0

你可以在你的模塊添加一個標籤,讓我們說Block然後實例之前一個你做GameObject.FindGameObjectsWithTag("Block");這將返回一個然後你只需要驗證該數組的長度。

void Spawn() 
{ 
    if(GameObject.FindGameObjectsWithTag("Block").Length < 2){ 
     Instantiate(spawn, transform.position, Quaternion.identity); 
    } 
    spawnTime = Random.Range(1, 5); 
    Invoke("Spawn", spawnTime); 
} 

你也可以有一個static變量,你產卵塊和遞減時,當你摧毀一個遞增。

+0

哇,這是比我想象的更簡單的方式,謝謝你的幫助! – enyap

+0

@enyap不客氣,我可以幫助開心:) – CNuts

+0

其實我現在遇到一個錯誤,它說GameObject不包含長度的定義。編輯:我解決了它,這是一個簡單的錯誤,我不熟悉統一API,並做了我生命中最簡單的錯誤哈哈抱歉打擾,謝謝你的幫助! – enyap

相關問題