天天看點

unity--Shader實作LOL幽靈船長皮膚效果

LOL中船長有一款叫做幽靈船長的皮膚,相信大家應該都知道,雖然不是什麼好看的皮膚,沒什麼特效,但是還是有點意思的。我們都知道遊戲中的換裝無非就是換模型,換材質,換網格這幾個套路。那麼在untiy當中我們應該怎麼做才能有像幽靈船長這樣的效果呢?其實我們隻需要編寫一個Shader腳本,就能實作這樣類似的效果。在這裡我分享下我的做法。先上效果圖。

unity--Shader實作LOL幽靈船長皮膚效果

哈哈,這是幽靈拉克絲,不是幽靈船長。效果差不多了,不要在意這些細節。那麼這是怎麼做的?其實也是很簡單的。不會很難。接下來我們來看看具體怎麼做。點選連結加入群聊【unity/cocos交流二群】

首先我們咋一看是不是有點像在醫院拍的X光的片子?那麼這個效果我們也可以叫它X光效果。可以看出中間顔色比較深,邊緣顔色比較淺,其實這就是利用法線與視線的向量點乘來進行計算的,其餘細節接下來再說,然後根據這個點乘值進行着色。最終呈現出來。這邊先上Shader代碼:

unity--Shader實作LOL幽靈船長皮膚效果
unity--Shader實作LOL幽靈船長皮膚效果

OK,代碼就在上面了,關鍵點注釋已經标注,其他的都是正常操作,這裡需要說一個點,就是我們想要的是幽靈的效果/X光的效果,那麼很明顯它是輸出顔色的。是以我們最終需要傳回COLOR,然後還有一個就是我們需要進行顔色的混合,打開混合模式。同時深寫模式要關掉。這樣的話,效果才會更好。至于幽靈的效果程度,我們可以通過調節參數來實作。慢慢試下就可以達到自己想要的效果了。關于是如何通過視線與法線的點成來得到中間顔色深,邊緣顔色淺的這個效果要說一下。點成dot = |A向量| * |B向量| * COS& ,當兩個向量的模都為1時,正好點成dot = cos&了,所有我們就可以根據這個值,得到一個數,這個數字再和顔色值相乘,就能得到不同的顔色值了。這樣就能達到我們想要的效果。好了,本次的分享就到這裡了。不喜勿噴哦!

繼續閱讀