切換
舊版
前往
大廳
主題

【Unity 腳本製作/分享 + 有小demo可玩】 2D Mesh炸開效果!

%%鼠 拒收病婿 | 2020-09-27 13:20:18 | 巴幣 24 | 人氣 693

放張最近的照騙:

前言先抱怨一下,我硬碟被微軟陰了一次,所以在那顆硬碟裡的專案檔都壞光光,之前在做的貓咪煉金師遊戲也炸掉了
所以第一種作法的程式碼打開有一半變成不能讀的亂碼,RIP。
今天主要講的是第二種做法。


這是我整理出的mesh基本觀念,不知道有沒有錯
  • mesh的vertices 是local座標。
  • uv數量=vertices 數量,是每個點的UV座標,介於(0~1)。
  • triangles[ ]長度=(vertices 數量-2)*3, 左手順時針順序,必為3的倍數。


第一種作法: 用Sprite自己切的Mesh再分割:
Sprite拉進場景時Unity就會先建好它的mesh,好處是可以不用自己再布局mesh,壞處是有些圖Mesh會長很奇怪,像是圖中那張羽毛球圖(專題組員畫的)的mes就很密集,而箱子就只是單單的2片。
我有試著再切割原本的mesh,但會造成uv貼圖位置跑掉,(因為每個獨立mesh的uv空間都是0~1)。


第二種做法:
原理:直接像建模那樣subdivide一個平面,再去計算每個點所對應的位置。

然後我覺得麻煩的是Sprite Sheet動畫的圖檔通常是一張大圖(裡面放了很多動作圖格),所以爆炸時需找到目前他正在播放的圖是哪一小張,再讀出來轉成texture。 簡單的方法是把圖檔放在Resources資料夾讀取。 (作法取自網路)

效果:
圖片會扭曲是因為我有開隨機


程式碼講解:(變數宣告的部分我就沒截圖)
n是單邊指切幾塊,若subdivide=1,則每個邊有n=1+2(頭尾兩個點)個點。
ran只是想讓點不要分布那麼平整而已,可以無視。

重頭戲是三角形

看那個藍色方塊應該比較好理解: (站在白板前想公式發呆www)
每個點的index值= n*X+Y
一個正方形可以切出左上邊三角形、右下邊三角形
公式下面那些數字只是我在驗算而已XD


上面是把一張圖片切成很多塊mesh,但仍然是完整的一塊,所以要用再把每個mesh切出來變成一個GameObject。

然後我放個event來說產生了哪些mesh物件,這樣想對每個mesh做不同處理就可以額外寫個腳本,讓這個腳本維持單一個功能就好。
像是範例裡,我有額外寫個腳本給每個碎片物理與幾秒後摧毀碎片。



雜談:

下面這個範例是我今天和同學參加比賽的成品(1/3),為甚麼是1/3呢? 因為比賽要3小時內依題目要求做出3個遊戲,然後這只是第一個,我們就做到玩起來了ww。 第二題做不到一半,第三題還要做連線下五子棋???瘋了吧

遊戲和程式碼我都放上github了,歡迎參觀
遊戲可以直接下載"Lontoone0927.zip"



最近其實還有學些小東西,有空再一一放上來吧
送禮物贊助創作者 !
0
留言

創作回應

悠閒紅茶
莫名的厲害啊
2020-09-27 13:41:26
%%鼠 拒收病婿
不會[e3]
2020-09-27 23:16:15
樂小呈
QQ
要不要試試用SourceTree 和Github 做備份
我在執行的專案或重要的文件都會這樣做
2020-09-27 14:05:10
%%鼠 拒收病婿
想說硬碟才買不到一個月還不用擔心...[e3]
2020-09-27 23:17:34
KK
有趣!這個炸裂效果好耶~~好玩XDDDD[e12]
2020-09-27 14:27:42
%%鼠 拒收病婿
感謝www 有種魔性
2020-09-27 23:17:54
追蹤 創作集

作者相關創作

更多創作