請問如何實現這種2D角色和背景遮擋半透明效果的實現

參考文章轉貼自: https://blog.csdn.net/u013052238/article/details/78788381

我想請問各位大大,Cocos Creator有沒有類似上面連結文章內說明到的Blend Mode可以實現這種效果?或者是自行擴充Blend Mode功能?也或者是有其他實現方式嗎?感謝各位大大了。

如果是3D的话,可以画两遍(双pass)实现。

个人猜测:alphabg->模板缓冲 人物绘制2次

最简单做法,人物放在最上层。如果发现人物与需要遮挡的建筑物重叠,则设置人物身体为半透明。

這目前是我自己想到解決的辦法, 可以給各位參考, 感謝各位大大。


  • Layer 1(不透明) 跟 Layer 3(半透明) 分別放置場景物件, 但是分別為正常透明度跟半透明。
  • Layer 2 跟 Layer 4 為Player渲染層級調動節點。

所以Player如果是處於Layer 2 的層級, 會介於Layer 1 Normal 跟 Layer 3 Opacity的場景物建之間, 就會有透視效果。
相反的Player處於Layer 4的層級, 就會渲染在所有物件之上。

目前這是我自己想到的解法, 這樣的做法如果是人物用Spine做, 也不用考慮太多各個處理方式, 這些都是各別分開的。
那麼如果場景物件是Texture Animation可以透過腳本同步Layer 1 Normal 跟 Layer 3 Opacity 的物件Sprite。

有這些拆分概念後, 可以結合Astar給予每個Grid不同狀態去做判斷。

2赞

我可以用射线检测,知道谁挡住了人。
然后讲改物体,修改他的透明度

不過這個方式我知道, 只是如果遇到人物是Spine做的會處理比較麻煩