標籤:

如何實現切割一張圖片?

因為要使用Unity製作一個類似地圖的完整圖片,大致是每局遊戲開始,我們要把一張圖片切割成隨機的幾塊。然後顯示出來。目前的做法是美術切割好了的6塊,但是現在需要隨機切割。有沒有大佬知道如何操作?

對不起大家。我問題沒有描述好。我的錯。

先上圖。

就是類似於這樣。

然後比如說 我目前只拿到了左上角的那個圖。其他圖片沒有。

或者是其中擁有其中某幾個塊,然後顯示。

最關鍵的是 ,每次遊戲開始我這個每一塊如何切割的都是不一樣的。

也就是說目前這些圖片都是切割好了的,我需要用演算法。重新自己隨機切割。


最簡單的做法可能是:把圖片分割成 n x m 個矩形柵格,然後把非邊緣上的頂點隨機向上下左右偏移,偏移的絕對值少於半個格子的長度寬度。此法的缺點是最後的形狀都是四邊形,每個非邊沿頂點總有四個鄰接四邊形。

另一做法是:以隨機直線切割凸多邊形,其結果是兩個凸多邊形,遞歸重複直至所需數量(可優先切割最大面積的多邊形)。此法的缺點是,二叉樹形結構明顯,而且多邊形總是凸的。


先將正方形隨機切成n塊(n遠大於6),然後不斷隨機選擇相鄰的部分合併(類似並查集),直至只剩6個聯通塊。

將正方形隨機分成幾塊的方法很多。例如:

  1. 用k條直線將正方形切成(k^2+k+2)/2部分
  2. 在正方形內隨機撒n個點,求其Voronoi圖

不同分割方法可能導致最後合併成的6塊風格也不盡相同。


需要真的「隨機」嗎?有可能會出現不可預測的結果:比如某些塊太大,某些塊太小,隨機切出的效果老闆不喜歡,美術老大不喜歡,玩家不喜歡,切出bug但無法重現云云。。。搞遊戲不是搞演算法,不如人工設計個足量的切法,每次隨機選一個,簡單又可靠。

解決了切的問題之後,把各塊各自的坐標系映射回地圖的坐標系,地圖當貼圖貼到各塊上,並不會多佔用顯存。


換個思路 隨機裁剪是不是小圖的隨機拼接?


請定義「隨機」

只能橫豎?只能直線?切完之後是否需要保持原來的位置?是否需要保證每一塊都是一樣的面積?

等各種細節,請補充完之後重新提問


多做幾套蒙版

每個蒙版都只露出一個碎片

每套蒙版都是一個完整的分割

每次隨機選取一套?


圖片還是完全不變,只要按照自己的需求計算出UV坐標和網格就可以了。


推薦閱讀:

Unity安裝->入門教程及工具下載使用
一種unity Android集成SDK的方式
【Unity插件】Super Invoke 超級調用插件 官方文檔翻譯

TAG:unity |