Cocos Creator小游戲案例實(shí)戰(zhàn):Cocos Creator 3.x開(kāi)發(fā)《切水果3D》
今天跟大家分享一個(gè)Cocos Creator 3D切水果的實(shí)戰(zhàn)案例,幫助大家掌握Cocos Creator開(kāi)發(fā)3D微信抖音小游戲,開(kāi)發(fā)工具我們采用的是Cocos Creator 3.6。先上一波游戲操作效果圖,接下來(lái)通過(guò)本文來(lái)講解這個(gè)游戲的一些核心的技術(shù)點(diǎn)。



游戲項(xiàng)目資源準(zhǔn)備
?我們剛開(kāi)始做項(xiàng)目的時(shí)候,首先要準(zhǔn)備好項(xiàng)目的資源,一個(gè)游戲項(xiàng)目包含的資源大致分為:3D場(chǎng)景, 3D角色,3D粒子與特效, 游戲音樂(lè)音效,2D UI界面, 游戲數(shù)據(jù)配置表等。我們把資源分類放好到資源包里面,如圖:

資源包按照類別分類進(jìn)行放好,項(xiàng)目的目錄結(jié)構(gòu)會(huì)非常的清晰。同時(shí)我們把游戲場(chǎng)景,3D模型,2D UI,都通過(guò)編輯器做成一個(gè)一個(gè)的預(yù)制體。如下圖所示的水果的預(yù)制體:

每個(gè)水果的結(jié)果都類似,如下圖榴蓮這個(gè)水果, 根節(jié)點(diǎn)durain下面durain01, durain02兩個(gè)節(jié)點(diǎn),這兩個(gè)節(jié)點(diǎn)分別表示水果切開(kāi)后的兩個(gè)模型節(jié)點(diǎn),另外一個(gè)子durain節(jié)點(diǎn)是整體的水果的節(jié)點(diǎn)。西瓜也類似,每個(gè)水果有三個(gè)子節(jié)點(diǎn)(切開(kāi)后左邊模型節(jié)點(diǎn),切開(kāi)后右邊模型節(jié)點(diǎn),完整的水果節(jié)點(diǎn))。


當(dāng)水果被切開(kāi)以后,隱藏掉全節(jié)點(diǎn),顯示兩個(gè)左右半邊水果節(jié)點(diǎn),然后左右的水果節(jié)點(diǎn)各自運(yùn)動(dòng)。《切水果》的3D場(chǎng)景非常簡(jiǎn)單,就是一個(gè)攝像機(jī)+3D背景。如圖:

UI資源,都根據(jù)游戲的設(shè)計(jì),做成一個(gè)一個(gè)的預(yù)制體,如下圖:

《切水果3D》的關(guān)卡設(shè)計(jì)與配置表
?資源介紹完成以后,就是關(guān)卡設(shè)計(jì)與配置表,水果如何出,有哪些類型,這些不可能用代碼寫(xiě)死,所以我們給策劃提供了一個(gè)關(guān)卡配置表,同時(shí)每種水果以及相關(guān)的數(shù)據(jù)都會(huì)有配置表,在代碼種我們做如下兩個(gè)配置表,如下:
Fragment.csv 配置表:描述了水果的生成邏輯,包括生成的時(shí)間間隔,生成的方向,初始的力,水果的大小等,表格頭如下:

根據(jù)難度登記分成了一些操作,然后先易后難的根據(jù)難度來(lái)生成對(duì)應(yīng)的水果與操作,這樣,越到后面難度越大。
fruit.csv配置表:每個(gè)水果的數(shù)值描述表,描述了每個(gè)水果的屬性特征,代碼里面讀取每個(gè)水果的屬性特征后,根據(jù)這些特征來(lái)生成對(duì)應(yīng)的水果實(shí)例。

當(dāng)我們要生成1001的水果的時(shí)候,我們從ID 1001,知道它是西瓜,對(duì)應(yīng)的預(yù)制體是watermelon。這樣就可以根據(jù)這條信息把對(duì)應(yīng)的水果創(chuàng)建出來(lái)。
核心實(shí)現(xiàn):生成水果與拋出水果
?在這個(gè)項(xiàng)目種的一個(gè)核心的實(shí)現(xiàn)就是生成水果與拋出水果,我們先來(lái)看生成水果,我們做一個(gè)GameMgr的腳本用來(lái)管理整個(gè)《切水果》的邏輯。GameMgr讀取配置Fragment中的數(shù)據(jù),根據(jù)這個(gè)數(shù)據(jù)來(lái)生成水果,代碼如下:

接下來(lái)我們看CreateFruitWithConfig函數(shù), 如何來(lái)創(chuàng)建一個(gè)水果物體,代碼如下:

節(jié)點(diǎn)創(chuàng)建出來(lái)以后,根據(jù)水果配置的參數(shù),來(lái)設(shè)置具體水果的位置等信息,我們來(lái)看下ResetFruit函數(shù)代碼如下:

水果的拋物線運(yùn)動(dòng)控制
接下來(lái)我們來(lái)分析一下水果的拋物線運(yùn)動(dòng)控制,我們基于Update來(lái)迭代拋物線運(yùn)動(dòng),根據(jù)我們配置表中的力的大小與方向來(lái)做拋物線,設(shè)置要給重力加速度,然后x, y上分別迭代,代碼如下:

運(yùn)動(dòng)過(guò)程中,習(xí)慣還要旋轉(zhuǎn),所以不僅要有位移,還要有旋轉(zhuǎn),我們給水果一個(gè)速度wSpeed。讓他圍繞z軸旋轉(zhuǎn),代碼如下:

今天的分享就到這里了,關(guān)注我,可以獲取教程的項(xiàng)目源碼。