Unity3D遊戲開發之高達光之翼月光蝶效果製作

2021-09-08 14:14:13 字數 1840 閱讀 3517

玩高達破壞者的時候看到多款高達有光之翼或者近似的效果,例如月光蝶,或者oor的高濃度粒子擴散,於是我也做了這麼乙個效果:

該文章出自【狗刨學習網】

常規的光之翼,比如命運、v2之類的,除了這個透明的效果,關鍵是裡面的紋理是會擴散著動的,具體效果可以看看優酷的**。(高達破壞者居然沒有v系列的機體……oo系的高達也少得可憐),由於手上沒有裝備光之翼的高達機體模型,所以這裡隨便拿了個rx78,阿趙我讓元祖也享受一下光之翼

光之翼擴散,諸如命運的爆種之類,如果再拉大點,然後在透明通道上面控制一下形狀,就變成月光蝶的效果了。

光之翼的顏色可以在材質裡面隨意更改,所以很容易可以配出gn粒子之類的效果,我就隨便調了乙個顏色。

下面說說製作的思路:

1、在3d軟體裡面準備好這樣的麵片。具體的形狀根據自己的需要。可以做成這樣的擴散型,也可以做成長條形的噴射狀。

需要注意的兩點,第一點是必須控制好物體的中心點,這關係到假如你放進引擎之後需要變換大小時的效果

第二點是uv的問題,由於我們需要做擴散流動的效果,我這裡是用uv動畫做的,所以就必須把uv朝向乙個方向,比如這裡是統一朝向右邊。

2、準備這樣的貼圖:

控制透明通道的遮罩貼圖:

作為顯示紋理的貼圖,可以是各種喜歡的形狀,比如我這裡就隨便在ps裡面做了乙個分層雲彩

準備好貼圖之後,我們可以先在3dmax裡面檢查一下uv的流動效果,打關鍵幀,然後給材質的漫反射通道做uv偏移動畫,如果動畫的效果合符自己的預想,就可以了。

3、把準備好的素材都放進unity3d裡面。然後寫乙個指令碼控制uv動畫(material.settextureoffset),再寫乙個shader控制光翼的效果。

或者直接把控制uv動畫這一步寫在shader裡面也可以。

shader的分析:

我這裡是用了指令碼來控制uv動畫的,所以用到了offset偏移。如果想直接在shader裡面控制,可以在片段程式裡面分別獲取uv的座標,然後將u座標根據時間來累加偏移就可以。

寫2個貼圖通道分別是紋理和遮罩,再寫兩個顏色,乙個是控制主顏色乙個是控制發光顏色。

_maintex ("base (rgb)", 2d) = "white" {}

_aphlatex ("base (rgb)", 2d) = "white" {}

_color ("main color", color) = (1,1,1,0)

_emission ("emmisive color", color) = (1,1,1,1)

為什麼要控制發光顏色呢?因為你有可能會根據場景的情況去條件環境光,一般的自發光只要把emission 變成純白就可以了,但這個光翼效果對顏色的強度很敏感,如果直接純白會出現色塊,所以用乙個自定義環境光乘以計算出來的漫反射顏色,控制光翼的具體效果。而為了讓光翼能在最開始的乙個範圍是純亮顏色,在邊緣的範圍才有紋理流動的效果,我在漫反射裡面讓主紋理顏色乘以主顏色之後,再加了乙個增幅相乘的透明度。

思路就是這樣,具體用哪一種寫法就自己決定了,用頂點片段程式也可以,用su***ce也可以。我這裡是用su***ce的:

half4 c = tex2d (_maintex, in.uv_maintex);

half4 d = tex2d (_aphlatex, in.uv_aphlatex);

o.alpha = d.rgb;

o.albedo = c.rgb*_color.xyz+d.rgb*d.rgb;

o.emission = o.albedo*_emission;

現在玩遊戲,有種以前搞樂隊時候聽歌的痛苦了。以前玩樂隊時,沒聽一首歌,都不是聽到歌手在唱什麼,而是聽到了鼓點是怎樣打的,聽到了結他是怎樣彈的。現在玩遊戲,玩到的不是遊戲的劇情或者玩法,而是每看到一種比較有趣的效果,都想做做看。

這估計也算是職業病的一種吧。

unity3d遊戲開發之習題總結

1 使用continue計算1 3 5 99 這道題如果不用continue的話,對於我們來說非常簡單,無非就是乙個通式就能搞定的2 n 1或者2 n 1 但是題目是使用continue計算,於是難倒了我們不少人,continue和break的區別是break是結束整個迴圈體,continue是結束...

Unity3D遊戲開發之構建簡單的遊戲世界

建立遊戲地面 建立乙個新的遊戲工程名稱命名為firstgame,場景檢視 現了預設的主攝像頭,那麼開始新增乙個遊戲地面,如下圖所示新增乙個遊戲地面,其實unity3d 有乙個地形的概念,terrain可以建立乙個遊戲地形,以後在介紹這方面的知識。今天我們主要的目的是構建簡單的遊戲世界。建立紋理貼圖 ...

unity3d遊戲開發之選擇結構和迴圈結構

選擇結構 if.else.語句 if 條件 else 條件 只能是布林型別的值。switch.case.語句 表示式可以是int,字元 字串 每乙個case都要以乙個結束跳轉控制語句結束 break return goto 迴圈結構 用於對一組命令執行一定的次數或反覆執行一組命令,直到指定的條件為真...