如何實現切割一張圖片?
06-10
因為要使用Unity製作一個類似地圖的完整圖片,大致是每局遊戲開始,我們要把一張圖片切割成隨機的幾塊。然後顯示出來。目前的做法是美術切割好了的6塊,但是現在需要隨機切割。有沒有大佬知道如何操作?
對不起大家。我問題沒有描述好。我的錯。
先上圖。
就是類似於這樣。
然後比如說 我目前只拿到了左上角的那個圖。其他圖片沒有。
或者是其中擁有其中某幾個塊,然後顯示。
最關鍵的是 ,每次遊戲開始我這個每一塊如何切割的都是不一樣的。
也就是說目前這些圖片都是切割好了的,我需要用演算法。重新自己隨機切割。
最簡單的做法可能是:把圖片分割成 n x m 個矩形柵格,然後把非邊緣上的頂點隨機向上下左右偏移,偏移的絕對值少於半個格子的長度寬度。此法的缺點是最後的形狀都是四邊形,每個非邊沿頂點總有四個鄰接四邊形。另一做法是:以隨機直線切割凸多邊形,其結果是兩個凸多邊形,遞歸重複直至所需數量(可優先切割最大面積的多邊形)。此法的缺點是,二叉樹形結構明顯,而且多邊形總是凸的。
先將正方形隨機切成n塊(n遠大於6),然後不斷隨機選擇相鄰的部分合併(類似並查集),直至只剩6個聯通塊。
將正方形隨機分成幾塊的方法很多。例如:
- 用k條直線將正方形切成(k^2+k+2)/2部分
- 在正方形內隨機撒n個點,求其Voronoi圖
不同分割方法可能導致最後合併成的6塊風格也不盡相同。
需要真的「隨機」嗎?有可能會出現不可預測的結果:比如某些塊太大,某些塊太小,隨機切出的效果老闆不喜歡,美術老大不喜歡,玩家不喜歡,切出bug但無法重現云云。。。搞遊戲不是搞演算法,不如人工設計個足量的切法,每次隨機選一個,簡單又可靠。
解決了切的問題之後,把各塊各自的坐標系映射回地圖的坐標系,地圖當貼圖貼到各塊上,並不會多佔用顯存。
換個思路 隨機裁剪是不是小圖的隨機拼接?
請定義「隨機」
只能橫豎?只能直線?切完之後是否需要保持原來的位置?是否需要保證每一塊都是一樣的面積?
等各種細節,請補充完之後重新提問
多做幾套蒙版
每個蒙版都只露出一個碎片
每套蒙版都是一個完整的分割
每次隨機選取一套?
圖片還是完全不變,只要按照自己的需求計算出UV坐標和網格就可以了。
推薦閱讀:
※Unity安裝->入門教程及工具下載使用
※一種unity Android集成SDK的方式
※【Unity插件】Super Invoke 超級調用插件 官方文檔翻譯
TAG:unity |