2017年5月2日 星期二

[Unity 範例檔] 指定物件散發光暈效果


'特定物件邊緣發光"是非常實用且常見的影像特效。無論是 Counter Strike:GO、Left for Dead 或是Diablo 3都可看到其蹤影。在 AssestStore 也有著非常多付費版本可供使用。本範例檔提供大家免費版本套用範例。並可且可自行設定散發出的光是否能穿透其他物件。

線上玩效果
原始檔下載 (2021.12.03 更新連結)

備註1: 本效果是從別的網站抓下來改的(原始作者的網站,內有原始檔) (我改蠻多的,建議也看看原始版)
備註2: 原始檔是可以複數物件散發不同顏色的光暈,我是改成比較簡化的版本
備註3: 各位可以自行特製增加其他效果,如果不知道怎麼動手可以在本文章底下留言
備註4: 如果新增修改了什麼效果發佈在網站上面,別忘了備註附上原始作者的網誌囉 
備註5: 類似效果(皆要付費) Highlighting SystemEasy OutlineSee-Through System (這個很酷)

這次輸出成WebGl時發現Shader效果不見惹!!
原來是原始作者使用了Shader.Find()這個方法,是只能用在編輯器狀態下的@@
還好我有看到官方文件跟 這篇精闢的 網誌,終於懂得如何修改成可輸出的版本。

...成功輸出到WebGL後又發生光暈位置與實際物體不符的問題 @@b,
仔細檢視一下shader後,終於找到改正這個問題的方法了。(Highlight.shader:44~49)

Left 4 Dead 的outline glow 效果:




3 則留言:

  1. 請問如果要刪除特定物件的Shader要怎麼做呢?

    調用ClearOutlineData()會刪除所有的物件Shader

    回覆刪除
    回覆
    1. Hmmm.... 他有提供一個RemoveRenderers(),但是似乎有問題XD,應該要多幾個步驟幫他改寫一下才能符合字面上的意義...改天我再改寫這段看看。

      如果不改寫不使用RemoveRenderers()的情況下想達到"刪除特定物件",我會採用刪除全部發光物,在重新加入我想要的發光物,來達到刪除特定發光物的目的。

      刪除
    2. 實際程式碼如下面這段影片~
      https://goo.gl/d9Wy8v

      刪除