2016-12-15 24 views
1

我想提出一個磚斷路器遊戲,磚放在如下游戲:更改磚精靈位置,每次我restsrt

bricks

現在我想的是,每當我開始我的新遊戲或重啓比賽結束後,磚應該隨機變化,但位置不應該改變!

有誰知道我該怎麼做?我應該改變磚塊腳本還是檢查員本身?

這是磚頭腳本:

public class BricksScript : MonoBehaviour { 

    // Use this for initialization 
    void Start() { 
    } 

    // Update is called once per frame 
    void Update() { 
    } 

    void OnCollisionEnter2D(Collision2D col){ 
     if (col.gameObject.tag == "ball") { 
      gameObject.SetActive (false); 
     } 
    } 
} 
+0

你可以在屏幕上隨機定位一塊磚嗎?你能從系統時鐘播種隨機數發生器嗎?這兩個應該讓你有很長的路要解決你的問題。 – rossum

+0

是的,我可以使用隨機函數做到這一點但我不想隨機任意定位! – utkdub

+0

@ dutaravi12345你有一個職位列表和顏色列表。第二個被隨機化。然後,將第二個列表中的顏色分配到第一個列表中的位置。就那麼簡單。如果您希望每種顏色的數量都是靜態的,您可以使用正確的數量初始化顏色列表,然後對其進行排列/洗牌(搜索)。 – Aziuth

回答

0

謝謝ü所有我解決我的問題如下:

  • 首先我創建了一個empty gameobject並附加script它。
  • 然後我編寫腳本如下:

    public class positionsBricks : MonoBehaviour { 
    
        public GameObject[] bricks; 
        int brickNo; 
        // Use this for initialization 
        void Start() { 
         Vector3 Brickpos = new Vector3 (transform.position.x, transform.position.y, transform.position.z); 
         brickNo = Random.Range (0, bricks.Length); 
         Instantiate (bricks [brickNo], Brickpos, transform.rotation); 
        } 
    
        // Update is called once per frame 
        void Update() { 
    
        } 
    } 
    

在檢查我拖和腳本拋棄了所有的預製件然後

  • 我複製了gameobject,並把它放在原有的prefabs和舊的
0

我的統一,是安裝在其他地方,但這裏是一個總體思路:

  • 創建一個空的遊戲物體,並附上管理磚的腳本。
  • 在層次結構中,將磚塊附加到brickmanager對象。
  • 在磚經理腳本Start()方法:
    • 遍歷磚一旦得到他們的所有位置,並將其存儲在一個列表
    • ,第二次將它們分配從列表中隨機位置。

或者,您可以硬編碼位置爲代碼在你的磚經理腳本或使用空gameobjects來擔任的職務。

+0

如果我創建一個空的gameobject並附加一個腳本到它將有一個gameobjects數組,然後附加所有gameobj(磚)在檢查員只有通過使數組公開然後使用'Random.range '和'Instantiate'在啓動函數中...關於位置我使用'Vector3'來獲取它們的位置而不改變它們? @Robin Koch – utkdub

+0

你覺得怎麼樣? – utkdub

+0

可以通過一些代碼來解釋循環思路...更好的是,如果給出一些總體代碼示例.Bcoz我是新手 – utkdub