如何使用Unity實現「饑荒」遊戲中的效果?

時間 2021-06-01 04:00:05

1樓:楊楊

我想說的用2d來實現3d效果是完全可以的,但是並不是必要的,複雜的設計會讓遊戲開發遇到更多的困難,而歐美遊戲設計師很懂這個道理.

2樓:秋淵

我經常玩饑荒,仔細觀察和思考了下,模型應該就是立在場景上,向著攝像機的2d麵片,而不是純2d的。這樣物體的前後關係 ,透視,攝像機變化等都很明朗了。

3樓:Jiang

我在之前做乙個橫版遊戲Demo的時候想過這個問題,當時在如何表現sprite的問題上費了很多腦筋。

引用兩張Demo的截圖:

這是場景裡的樣子:

我後來使用了遊戲中3D的元件來實現這一效果,把遊戲中的所有2D碰撞元件和剛體換成3D的,對應的方法也要改,然後把碰撞盒的體積調整為想要表現出的體積即可。最後把Camera向下傾斜20度左右

這種方法的優點:直觀性強,操作簡單。比如那個冰牆如果用純2D做的話美工需要做三張圖,用這種方法只需要做一張,然後複製並旋轉。

而且可以使用一些U2D中沒有的方法,比如ExplosionForce.

缺點:由於傾斜了攝像機,所以sprite在Y軸上會有一定壓縮,但實際影響不是很大,可以讓美術前期把素材稍微拉長(倍數根據傾斜的角度自己算)。而且使用3D的元件可能效率不及2D,小遊戲就無所謂了。

4樓:Young

同意@Snafloda的回答,我也簡單再說一下吧。

首先,dont starve是個3D遊戲,這是肯定的,不信進遊戲試著摁下Q鍵和E鍵就懂啦。

遊戲裡所有物體都有乙個3D的座標,只不過表現形式均為2D的貼圖,渲染的時候會根據玩家的視角計算,近的物體會疊在遠的物體上面,營造出一種真實的景深效果,就醬。

5樓:汪汪

首先最高票說的沒錯這就是個billboard的效果不過完全沒必要用粒子實現甚至沒必要特意billboard 把相機和場景中所有麵片即除地板以外的東西共享乙個旋轉值不就完了……

簡單問題永遠不要複雜化 think it easy!

6樓:張三

斜45度的畫面用2D或3D引擎都可以做,這不是重點重點是,在螢幕上越往上的物體,在Z值的對應上需要越往後。這樣就能實現正確的遮蓋效果。

人物在下,Z值就在建築的前面;人物在上,Z值就在建築後面把它分成player層和building層本身就不對。因為人特有時候有建築前,有時候在建築後,不能把渲染順序寫死

7樓:lhelpme

該題應該區分繪畫風格和排序方法兩個概念。

45角度投影,是遊戲中的sprite的繪畫方式,通過正交相機,從正方體的乙個頂點向正方體中心射去,所產生的繪畫風格。

基於這種繪畫風格,為了正確的顯示順序,需要將地面切分成菱形網格,所有物件占用特定數量的網格,sprite之間的排序採用軟體控制,在cocos2d裡面是zorder, 在unity裡面通過renderqueue.

根據sprite的y座標大小,來賦值相應地渲染順序。

參考這篇部落格:

饑荒的鏡頭是在正方體的一條邊上向中心投影,地面被切分成矩形網格,物體的排序也是通過y軸座標,來計算相應地cocos2d裡面的zorder或者 unity中的 render queue.

這兩種不同的鏡頭,排序方法類似,只是地面網格的切分方式,以及場景物件的繪畫方式不同。

而一般的3D遊戲裡面,採用的是硬體排序的方法,即通過zdepth 來排序。

2D遊戲裡面不能使用這種方法主要原因是2D元素是存在alpha通道的,一些情況下需要表現半透明正確混合。

如果只是alpha cutout 則使用硬體排序zdepth 也是可以的。

8樓:

不請自來,說說我的看法。

我覺得你可以這樣做,就是每個物體都分為「地基部」跟「上層部」。這樣的做法不僅僅可以解決視覺問題,還可以解決走動問題,還可以解決由少部分的東西可以組合出多個不同的建築或者樹或者各種物體。

如果覺得我說的有那麼一點,再細說。

9樓:

全3D建模的時候,如果你這的建築物和人物在同乙個layer,那麼就考慮下Z值就行了。實際上不同的物體在不同layer確實很麻煩。

全2D建模的時候,你可能需要自己實時的計算修改層級。

當然還有地圖3D,物體2D,或者反過來的情況。視情況解決。

10樓:康托耶夫

外掛程式小王子康托覺得下面三個應該必有一款滿足你『Ultimate Isometric ToolkitAsset Store

Easy Isometric SortingAsset Store

Isometric 2.5D ToolsetAsset Store

這種排序法在以前做傳奇傳世的時候還是經常見到的,屬於2d排序的常用做法,某種程度上3d引擎是更容易實現的,不過因為2d引擎的思路和3d的不同,實現起來會是兩套不同的體系,導致說你的三維角色沒法在2d空間裡面正確的遮擋(spine之類當然沒問題,不過那個也是通過sort 實現,而不是深度)

我推薦的外掛程式裡面的第一和最後乙個,我記得是將sprite自動在3d空間內做深度散布的,非常好解決2d引擎在3d空間裡面的解釋問題。

當然倒是沒機會實踐,只能說推薦推薦。 話說當年有個專案還想過這種iso檢視下在3d引擎裡面如何實現的問題,最後只是c4d出了個概念,這麼一說突然又想起舊事(你說說現在條件多好,想做啥做啥。)

如何使用 Unity 3D 開發網路遊戲?

左村 unity3D 本身有一套現成的機制 HLAPI 網路遊戲很多種,具體遊戲,具體分析,夠用就行了,那些說沒用的,都只是說自己的專案而已。 Allen 我覺得提問者關注的是 是如何設計網路庫的吧,本身對網路庫支援並不是很好,對網路庫支援很好有等,客戶端本身對網路吞吐要求不大,只要確保不能在 上阻...

如何用unity實現戰鬥系統呢

張詡文 所謂戰鬥系統,無非是個狀態機。延伸出去做細了,才涉及到AI,尋路之類的方面。當然對戰遊戲的話就得研究同步了。其實每項技術原理都非常簡單,但面對要求比較高的場景,需要考慮的東西就很多了。 參考unity的物理引擎使用,入門和中等級別的可以看Unity3D動作遊戲開發的隨書demo。動畫幀事件的...

使用Unity開發遊戲,有流行的框架嘛?

陳凱利 仙劍奇俠傳4手遊 天域幻想 巴清傳 少年劍影 撞擊女神 七七捕魚.這些大型遊戲都在用 許巨集冰 用過ICO,己放棄,現在在使用unity開框架ET,可以試下,還不錯,伺服器和客戶端都是C 推薦試試,直接在github查詢ET,就可以找到 2010年我搞手遊那會兒我們就用了三層架構,當初對照軟...