cocos creator--游戲開獎功能組件《刮刮卡》特效實現


一、 需求分析

【1】實現手指觸摸刮開效果;【2】優化:判斷刮開與否(能否正常看到獎項)。

二、 游戲場景可視化編輯

三、 手指觸摸刮刮卡動態刮開效果的實現

Mask為反向遮罩節點,必須確保大小和位置為(0,0)。

運用反向遮罩和繪圖來實現。 首先為Mask節點添加Mask組件。記得將Inverted(即反向遮罩)勾上。

原理:類似於PS中的遮罩,或者沙畫,比如你在玻璃上寫了幾個字,但是我在你玻璃上鋪上了一層灰色的沙子(MaskBg),在沙子上撒了一點特侖蘇,留下了“刮獎區”三個字。你想把下面的東西顯示出來,只能拿到Mask節點上面的那把刷子,將沙子掃開。推薦一個學習交流群:1072209430

新建GameMgr.js,並掛載到Canvas節點上。代碼如下:

四、 隨機刮開獎項

在GameMgr.js中增加如下代碼即可:

五、 刮開面積計算與刮開結果后的回調處理

增加當擦除到70%的時候所有texture消失,執行回調事件。

本方法是先根據接觸點的大小在圖片上排列一個點矩陣,每個點矩陣有一個檢測范圍且只能被檢測一次,每次被檢測刮開的數都會執行++操作,直到接觸點等於目標點(刮開的范圍可以自己設置)后,遮罩的圖片消失,並執行回調函數。

注:該方法不用設置主節點Mask節點的大小,在代碼會改變它的大小的。

1. 初始化遮罩層的記錄點數組

2. 刮出面積計算

3. 回調處理

添加一個對話框,隱藏,當刮開面積達到一定比例后,說明用戶已經刮開獎項了,可以彈出對話框提示領取方式等。

4. 思考:只刮開周邊區域沒看到文字也彈出不合理

方法一:縮放maskBg即可(如果獎項沒有顯示在中央則會不合理)

方法二:如下,添加覆蓋獎項的節點,調整位置、大小和透明度。

之后,運行結果如下(即使周邊全部刮開,內容沒顯示,也不會彈出兌獎方式):

一、 小結

1、做游戲開發,首先要學會將任務拆解,其次要設計好游戲中的主要算法,考慮好采用的數據結構,之后,逐步實現步步為營。

2、有問題的朋友,可以聯系我們獲取本節課完整視頻。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM