用2D素材實現3D效果!
前言好久沒寫教程筆記了,不知大夥是否想念教程了?
溫馨提示:所有內容純屬個人瞎玩研究,如要上線項目,請自行評估~ oh
最近逛論壇,看到有一位小夥伴想實現下面這種透視效果。
預期效果接著,去找了(扒)這個遊戲的素材,都是2d圖片。
這想到兩個方案去實現:
純2d實現:對一張圖片的每個頂點做一次投影變換,算出每個頂點在2d屏幕中的坐標。用3d實現:調整相機參數,圖片放在 Quad (四方形) 上,布置3d場景。綜合考慮,用3d實現相對方便一點,行動起來吧!
實現本次主要實現兩個點:
布置場景新建場景後,在場景中添加4個四方形(Quad),通過旋轉平移縮放,圍成長方體的四個面。
接著創建材質(牆/地板/天花板),採用 builtin-unlit.effect(無光照),並選取對應的texture,再把材質加在對應的四方形上。
所有都創建完後,是這個樣子的。
這個洞的深處應該有個漸變黑影,把這個資源類型改成sprite-frame,並加入場景的UI層。
接著調整一下攝像機的參數,讓這個漸變黑影在中間,預覽運行,結果如下。
金幣素材是2d的幀動畫,要在3d實現透視效果這裡同樣採用四方形。
原素材有點擠,我們稍微處理一下,讓其每一幀的圖片位置均勻。
這邊用的是 shoebox 拆圖,然後放在ps裡調位置,導出的圖片長寬需要是2的n次冪。
更程式設計師的做法是寫個腳本分割圖片,再重新生成圖片(或者找美術爸爸出圖)
同樣的,也建一個金幣材質,選擇builtin-unlit.effect,選擇transparent(透明)的通道(因為該圖要用到透明),修改tillingOffset(紋理縮放偏移)參數。
創建一個四方形,選擇金幣材質,添加動畫,修改tillingOffset中的偏移參數。
創建金幣動畫1
再把動畫過程調成Const,可以看到初步效果。
最後,多放幾個金幣在場景中,加一些牆紙放牆上~
如果你想繼續把這個做成遊戲的話,可以參考以下幾個步驟:
地圖生成:把地圖塊做成預製體,根據相機的位置,不斷回收前面的和生成後面的地圖塊。碰撞檢測:同樣可以根據攝像機的位置以及角色的位置,和帶檢測物體的位置判斷。「點讚「 」在看」 鼓勵一下▼