大家好~ 我是遊戲「東方戀迷蹤」的製作人 零教授~
我製作的遊戲是一款以骰點爲戰鬥核心(並非核心)要素的回合制策略冒險遊戲~ 因此骰子的製作可以說是遊戲的基石
目前遊戲還處於框架搭建中~
說起戰鬥中的骰子檢定,無非就是擲出一枚骰子,旋轉出一個點數來表示基礎傷害。
那麼「旋轉動畫」和「示數」便就是一枚骰子所需要承載的全部(並非全部,還有作爲子彈發射出去攻擊敵人XD)功能啦~
消失的前作
![]()
玩過我以前的作品戀野迷蹤的小夥伴們可能知道,戀野迷蹤的六面骰可能會骰出-99到+99的一切數字……但是這是通過非常離譜的操作做到的,見下圖:
![]()
東方戀迷蹤的100點骰子
是的,用了若干幀的旋轉動畫……加上一點……嗯,100多個骰子結果的貼圖來完成。
不是,這命名可以用一個空白方塊加上文本框做的東西爲什麼要做100張圖啊喂!
![]()
跑團遊戲常用的各種骰型
新作「東方戀迷蹤」的骰子系統迎來了巨大改個,骰子的點數真的是根據骰子的面數來決定的了(也不一定(
![]()
六面骰的第7面
而且遊戲中有14種屬性的骰子,對應的會造成14種傷害。
![]()
那麼骰子種類x骰子面數x14種屬性……顯然這個結果數量會遠超前作。
那必然不可能再用以前2d遊戲的製作方式來製作骰子,不如……
沒錯,擲骰子當然還得擲3D骰子!
製作3D骰子
本作使用的引擎Godot怎麼說也是個3D引擎~ 做個能轉的立方體還不是小菜一碟~
![]()
![]()
於是我立即製作了一個簡單的骰子模型,並將其導入了戀迷蹤的工程中。
當然,在2D遊戲項目中導入3D對象,需要再建立一個Viewport和攝像機,來拍攝它,並且得用正交攝像機才能達到適配2D的效果。因爲Godot的2d世界和3d世界是分離的,這點和大多數3D引擎很不同。
![]()
這裏有個小坑,在Subviewport中要重新建立CanvasLayer哦,因爲哪怕是SubViewportContainer被放置在了CanvasLayer中,Subviewport也會打斷其渲染結構,重新第0層渲染圖像,所以必須在裏面再建一個CanvasLayer
![]()
於是我就在場景中成功得到了我的第一枚3D骰子!距離今天開工還不到20分鐘,正當我歡欣鼓舞的時候,我還不知道我接下來會面對什麼~
3D與2D思維的水土不服
首先我需要製作旋轉動畫,那麼按照前作的經驗,當然是把骰子立起來,以對角線爲轉軸旋轉啦。
![]()

當我把骰子的角度改爲X 45° Z 45°時,令人疑惑的一幕出現了……骰子變成了偏心旋轉!
啊不是,我要讓他以Y軸旋轉啊,其他兩軸各自變爲對角線難道不會讓Y軸成爲轉軸嗎。
當然,骰子的正中心毫無疑問在質心
![]()

然後在我一度一度的修改角度嘗試後,神奇的事情發生了。當我把X的轉角改爲35度之後,Y軸居然差不多正好成爲了旋轉軸!
![]()
![]()
![]()
然後我問了羣友和AI以後,好吧,這又是個不學數理化,生活處處是魔法的問題……
X軸的旋轉角度顯然應該是35.26度
2d平面的對角線確實是45度,但是兩個2d的45°又不會組成3d的對角線
![]()
仔細一想,立方體的對角線其實也是個2d問題,對角線與底面的夾角完全可以算出來,然後取個餘角就是X旋轉的角度了。哎,還是數學太差了。 讓我算兩面角我就沒算對幾次過。

順便,別忘了打開MSAA抗鋸齒,否則鋸齒感有點強
引擎說,要有光
![]()
![]()
然後光照的問題接踵而至。2d遊戲的光照非常純粹,加個平行光,場景就變亮;加個點光源,離得越遠的就越暗。什麼光都不加,貼圖就是原本的顏色。
但是3d世界下,如果什麼光都不加,那就是漆黑一片。所以必須加光源,且點光源的距離、平行光的方向都有講究
![]()
![]()
我的骰子模型是具有法線貼圖的,但是遺憾的是,無論正面朝上的貼圖,還是高速旋轉的貼圖,法線貼圖似乎都沒體現出它的功能來……太不明顯了
![]()

後來發現是光強太強了,把陰影弄沒了……以及正視圖哪怕平行光正交過來照射,法線貼圖也是看不出的,畢竟屏幕視角是法線方向,與法線平行了,法線貼圖的效果自然出不來……因爲視角就沒和法線相交,而骰子示數又不好轉個角度,轉太小的角度法線效果也出不來……
後面我才發現,要把光照調成徑線方向(平行於屏幕的方向),這樣會有一些法線貼圖的效果
三維貼圖展開來要注意貼圖方向!
![]()
![]()
定製骰子貼圖的時候,我想當然的把所有貼圖都以垂直向下的方向在PS裏貼了上去。絲毫沒注意到原先的骰子貼圖各種面都是轉過的。
![]()
直到我需要擺出示數的時候……看到骰子點數3的面需要把X軸轉180度、Y軸轉-90度、Z軸轉90度,才能轉出PS裏預設的方向……(這個點數貼圖有個漸變,能看出上下方向來)
這同時轉三個軸才能轉回原先方向的設定看得我暈頭轉向……
不敢想象以後轉20面骰該有多難受!20面骰上面的都是阿拉伯數字啊!把6轉成9怎麼辦!
臨近做完了主美說骰子光影質感不夠……
都快做完了,主美丟了張圖上來
![]()
說2d還是比較適合這種畫風,而且也有光影感。啊這
於是一版一版調了三大版(小版本無數)
![]()
第一版,基礎的啞光卡通渲染風格
![]()
第二版,使用二分光影法構建出明確的暗面
![]()
第三版,正視圖怎麼也不喫光影,無奈改法線貼圖
怎麼說呢……把一個普通的3d材質改成適配2d的風格,且要加強明暗光影的對比……這兩者難道不是衝突的嗎
![]()
看了一些3d渲染教程的思路,首先得把Diffuse Mode和Specular Mode都改成Toon,這一步好像是和漫反射相關的。
roughness要拉到1,做完這一套標準材質設置就能做出初具卡通風格的三渲二骰子了……
![]()
本來我就做到這一步就打算結束了的……畢竟這是啞光骰子誒,無論如何效果都是最穩定最接近2D的……
然後說是要加強光影,所以寫了個Shader用gradient明確劃分出亮暗面來,減少過渡區域
![]()
![]()
但是正視圖的這幾個骰子油鹽不進啊,畢竟正視圖本來就沒有暗面可言,平行光是完全能照亮他們的。
![]()
![]()
氣得我試了一個小時,然後最後打開PS力大磚飛的給法線貼圖上了幾個漸變疊加。
這下好了吧,給我出暗面了吧

![]()
![]()
最後出來的效果,你別看旋轉動畫,30幀的圖你能看出個啥,實際遊戲中你也只能看到它30幀(0.5秒)。你就看靜態的那一排骰子,就說和要求一樣不一樣吧……
誒,製作人逐漸變成了程序員的形狀……
![]()
製作人不是隻需要負責提需求就夠了嗎……
![]()
寫完代碼抬頭一看晚上8點了,媽呀我從早上9點開始寫就喫了一頓飯,晚飯都沒喫。坐了一天牢纔將將完成骰子旋轉和示數倆動作…… 哎,再也不碰3D的玩意了老老實實坐2D遊戲吧……
![]()
感謝你聽完我發牢騷~ 感謝支持東方戀迷蹤!我們下期再見!
更多遊戲資訊請關註:電玩幫遊戲資訊專區
電玩幫圖文攻略 www.vgover.com
