NEIL的Unity學習筆記(3) - 轉珠寫法簡易入門
寫了一個轉珠的遊戲,順道也寫一下教學,有興趣的話可以下載看看 https://play.google.com/store/apps/details?id=com.FruitsPuzzle.CF 這個簡易寫法跟一些主流遊戲的差別在於珠子的移動判斷。 我分享的這個簡易入門版只是進行了珠子的位置互換,而主流遊戲如龍族拼圖,它可能是使用了類似a star演算法。更具體一點來說,這個簡易版的缺憾就是,如果你移動太快,會偵測不到移動路徑中的珠子,會直接與最後位置的珠子互換。而龍族拼圖會把你最後的位置進行A* 尋路演算,與路徑中的每一顆珠子互換。 另外這個寫法是原地重新,非主流遊戲的往下/往上掉落。消珠的方式也有差異。 所以這算是一個概念式的入門分享,更進階的請自己努力去想一想吧。 首先,我們會利用2D array的寫法去建立5*6的架構 建立一個public static DATA的公用資料庫,然後進行下列定義 public static int row=5; //這裡 row 和 column的名字我倒轉了, 別在意, 看懂就好 public static int column=6; public static int[,] _Matrix = new int[column,row]; 注意一下,在unity C sharp的寫法是 int[ a,b], 而不是int[a][b]。 定義好之後,我們利用for loop去快速的幫我們在各個位置設定好數值 for(int b=0;b<column;b++){ for(int a=0;a<row;a++){ _Matrix[b,a]=Random.Range(0,5); } } 因為public static DATA只作資料存取之用,不用也不會依附在物件上面,程式只會在呼叫時才會運用,所以我們要建立一個主運行的script,我把他叫作GlobalControllor。 然後在裡面建立一個產生珠子的function void respawn(){ //預先建立一個空物件供珠子依附,如果要共用function的話多做一個動作把珠子移除,避免重複產生 balls.Broadcast