【游戲客戶端】實作刮刮樂效果
之前的博客中,我和大家分享了如何做:
- 商業化的充值活動 :【商業化充值活動博客】
- 抽卡系統:【抽獎,抽卡系統博客】
- 裝備系統:【裝備系統博客】
- 紅點系統:【紅點系統博客】
- 商店&拍賣系統:【商店&拍賣系統】
- UI環繞特效:【UI環繞特效】
你永遠猜不到策劃會提什么需求,今天要給大家分享比較好玩的刮刮卡效果實作的思路

(一) 利用RenderTexture實作刮卡圖層
之前我們曾經使用過RenderTexture類實作螢屏的截圖,而這次實作刮卡的效果同樣需要用到這個類(這也太好用了吧)
首先我們需要一個UI圖片控制元件,這個圖片展示我們的掛卡層紋理(如下圖的灰色“掛卡區”)

然后創建一個RenderTexture的實體,然后把我們的UI圖片控制元件繪制一遍讓畫布記錄下來,記錄下來之后,我們的UI圖片控制元件就可以被釋放了,此時展示在螢屏上的,雖然沒什么變化,但其實已經不再是原來的UI控制元件,而是替換成RenderTexture的實體了
(二) 利用DrawNode創建一個“橡皮擦”
DrawNode可以繪制幾何圖形,矩形,三角形,圓形任君選擇,而我們實作橡皮擦的邏輯就是,讓DrawNode在RenderTexture實體上繪制,然后遮蓋住原先的像素點,從而實作讓刮獎層“消失”的效果

而我們的刮獎程序實際是讓畫布變透明,所以我們需要這個橡皮擦是透明的,而且在橡皮擦和RenderTexture畫布進行顏色混合繪制時候,只顯示我們的橡皮擦顏色,因此就要用到我們的混合函式glBlendFunc(GL.ONE, GL.ZERO)了,混合函式知識openGL博客有提到大家可以跳轉去看
【openGL2021版】粒子系統(全)
(三) 利用Layout相應觸摸事件

RenderTexture并不能回應觸摸事件,因此我們需要一個layout來相應刮卡的事件,可以構建一個長寬和畫布相等的layout,然后利用onTouchBegin,onTouchMove來監聽好移動事件,當觸摸點進行移動時,我們就根據觸摸點的位置重新設定drawNode的位置,然后讓畫布和橡皮擦進行混合繪制,這樣就能實作刮刮卡的效果了
好啦今天就到這里
點贊,關注!!!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/344386.html
標籤:其他
