最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

微信抖音小游戲《黃金礦工》案例詳解

2022-03-17 18:58 作者:BYCW丶幻彩  | 我要投稿

序言

微信小游戲,抖音小游戲,非常適合個人開發(fā)者創(chuàng)業(yè),不用版號,門檻低,同時抖音小游戲的系統(tǒng)算法推薦,能讓好的游戲脫穎而出, 你要做的就是把游戲做好就可以了。

本篇系列的文章,配套了視頻教程講解與課程資源,課程源碼。可以關注留言獲取哦!

下面開始講解黃金礦工的具體制作流程。

1:開發(fā)工具的基本使用

教程的開發(fā)工具選用cocos creator, 開發(fā)語言選用TypeScript。首先我們創(chuàng)建項目,導入素材,素材如圖:



項目路徑不要使用中文和空格,使用英文或英文縮寫,項目工程里面的目錄結構要清晰,在Assets下面我們分成Res, Scene, Scripts,。



2: 搭建《黃金礦工》游戲場景

一般做一個2D游戲,我們會把一個游戲的場景分成下面幾個層次:

a: 游戲背景層 b: 游戲地圖層
c: 角色物品層, d: 游戲UI層,我們按照這個層次,把黃金礦工的游戲地圖分類進行放好,如圖:



BackGound: 背景層, LogicMap: 邏輯地圖層,黃金礦工還有什么地圖呢?主要是要把邊緣表示出來, 我們使用了碰撞檢測系統(tǒng), 所以把邊緣堵上墻,作為我們的邏輯地圖,也就是加Box碰撞器,如圖:



GoldRoot 黃金物品的跟節(jié)點,所有的黃金生成出來后都放這個根節(jié)點下。



Player: 游戲主角,就是我們的礦工的繩子和鉤子。這個制作的時候一個技巧,主角是由繩子,和繩子斷點上的金屬圓環(huán)組成。



Player的原點在繩子的一頭,所以繩子作為Player的孩子,錨點要為[0.5, 1], 繩子的長度可能會變化,我們修改body的高度就可以讓繩子有變化。比如繩子長度為200,我們把body這個節(jié)點的高度改成200,即可



金屬探測圓環(huán),我們命名為header, header 的位置是與繩子的高度相關的,在最下面,我們觀察一下坐標,



得到一個結果, header的坐標: -(繩子長度 + 10)。

UIRoot層:用來放我們用戶的UI操作相關。場景搭建就此搭建完畢。

3: Type Script代碼開發(fā)

Step1: 新建一個組件類,被引擎識別, 這個非常簡單,直接右鍵新建一個TS腳本即可

Step2: new 組件實例,到場景的節(jié)點上。這個有兩種方式,可以編輯器添加組按鈕來添加, 可以代碼addComponent(類型)添加, 本質(zhì) new 組件類的實例添加到節(jié)點上。

Step3: 游戲引擎特定時期,調(diào)用特定的入口, 我們寫代碼如果沒有人調(diào)用是不值錢的,所以必須要讓引擎調(diào)用到,引擎會在特定的時期,調(diào)用我們特定的入口,我們只要往特定的入口插入代碼即可,開始運行之前調(diào)用 組件實例.start();每次刷新的時候調(diào)用組件實例.update(),等這些規(guī)定的接口。引擎通過運行場景,找到場景的節(jié)點,找到節(jié)點上組件實例,來獲得組件實例,這也就是組件實例為什么一定要添加到節(jié)點上就是這個原因。

4: TypeScript 代碼模板介紹:

1. ?`cc: cocos creator;` 2. ?`cc._decorator: 名字空間,定義了裝飾器/注解` 3. ?`ccclass: 裝飾/注解 一個類是一個組件類; property: 裝飾/注解 一個類的數(shù)據(jù)成員 綁定到編輯器;` 4. ?`@開頭表示裝飾注解` 5. ?`cc.Component: 組件類的基類;` 6. ?`export default: 外部要使用這個類,import default 來獲取這個類型;` 7. ?`@ccclass` 8. ?`export default class GameMgr extends cc.Component {` 9. ?`// 權限 ?名字: 類型 = 默認值;` 10. ?` ? ?@property` 11. ?` ? ?private isDebug: boolean = false;` 12. ?`}`


5: 黃金礦工核心思路分析

黃金礦工游戲玩法中,要碰到黃金等物品,還有要碰到邊緣等物品,所以我們要利用碰撞檢測系統(tǒng)來做碰撞檢測。Setp1: 開啟碰撞檢測, 分為兩個步驟

代碼如下:


Step2: 編輯碰撞區(qū)域。

1. ?`黃金需要編輯碰撞區(qū)域,游戲地圖的3個邊需要編輯碰撞區(qū)域, 礦工的圓形金屬探測器需要添加碰撞器。`

Step3: 類型配置與碰撞關系配置。

這個案例里面我們把物體分成了類型有:邊緣(BORD), 黃金Gold, 探測器Header。分別設置好對應節(jié)點的類型。







Step4: 碰撞檢測

我們讓金屬探測器Header來做碰撞,碰撞檢測記住一點,那個碰撞器檢測碰撞,就把碰撞檢測的代碼掛到那個碰撞器對應的節(jié)點上,所以新建一個代碼來做碰撞檢測,實現(xiàn)碰撞檢測的函數(shù)入口


Step5:配置好碰撞關系,哪些類型與哪些類型碰撞,如圖



黃金礦工會有多個游戲狀態(tài),我們這里將其進行分類:

狀體1: 我們的鉤子擺來擺去; --->Idle
狀態(tài)2: 我們的鉤子發(fā)射出去 ---> Shoot
狀態(tài)3: 碰到邊緣我們就彈回來; ---> Back
狀態(tài)4: 如果狀態(tài)的是黃金我們就把黃金拖回來; BackWithGold 如果還有其他的狀態(tài),你也可以定義好, 我們編寫一個GameMgr代碼,管理整個游戲,在這個代碼里面定義好狀態(tài):


狀態(tài)定義完成以后,我們分析一下狀態(tài)變化的條件,整理如下:

狀態(tài)1---》狀態(tài)2: (用戶點擊了屏幕)
狀態(tài)2---》狀態(tài)3:(鉤子撞到了邊緣)
狀態(tài)2----》狀態(tài)4(碰到的是黃金)
狀態(tài)3/狀態(tài)4 ---》
狀態(tài)1:繩子拖回來以后,我們便回到狀態(tài)1

每個狀態(tài)的動畫,我們編寫一個函數(shù),用來實現(xiàn)如下圖,在update里面:

1. ?`// 1===============1===============1===============1=======dt========1` 2. ?` ? ?// dt: 迭代,100 * dt` 3. ?` ? ?update(dt: number): void {` 4. ?` ? ? ? ?if(this.state === State.Idle) {` 5. ?` ? ? ? ? ? ?this.idleUpdate(dt);` 6. ?` ? ? ? ? ? ?return;` 7. ?` ? ? ? ?}` 8. ?` ? ? ? ?else if (this.state === State.Shoot) {` 9. ?` ? ? ? ? ? ?this.shootUpdate(dt);` 10. ?` ? ? ? ? ? ?return;` 11. ?` ? ? ? ?}` 12. ?` ? ? ? ?else if(this.state === State.Back) {` 13. ?` ? ? ? ? ? ?this.backUpdate(dt);` 14. ?` ? ? ? ? ? ?return;` 15. ?` ? ? ? ?}` 16. ?` ? ? ? ?else if (this.state == State.BackWithGold) {` 17. ?` ? ? ? ? ? ?this.balckWithGoldUpdate(dt);` 18. ?` ? ? ? ? ? ?return;` 19. ?` ? ? ? ?}` 20. ?` ? ?}`


把狀態(tài)顯示的接口完成后,接下來編寫狀態(tài)改變條件。用戶點擊屏幕,idle-Shoot狀態(tài),代碼如圖:


狀態(tài)改變的代碼一定要加一個邏輯,就是當前狀態(tài)的判斷。碰到物體后,狀態(tài)改變,所以,當金屬圓圈,檢測到碰撞的時候,調(diào)用GameMgr的接口,進入判斷檢測函數(shù)。HeaderCtrl.ts 在碰撞函數(shù)里面添加

1. ?`GameMgr.Instance.onGameCollisionEnter(other, self);`

GameMgr.ts里面實現(xiàn):


狀態(tài)遷移改變完成了以后,我們就是實現(xiàn)每種狀態(tài)的動畫了,這里我重點要介紹一個函數(shù),


這個函數(shù),可以修改繩子的長度,這樣,等繩子拋出去,與拖回來都可以用。

狀態(tài)遷移邏輯框架實現(xiàn)后,最后我們來往每種狀態(tài)里面加代碼。

Idle:

定義一個角速度,定義當前角度,update不斷累加,如果超過左邊,就轉(zhuǎn)變方向 如果超過右邊,也換個方向到左邊。


Shoot:

定一個繩子生長的速度,每次update, 繩子長度變化(速度*時間)


Back:

碰到邊緣返回,直接把繩子的長度,由Shoot的變長,變成變短,所以是減。


BackWithGold:


這樣就實現(xiàn)了黃金礦工的核心玩法。本次課除了有文字,還配備有 完整視頻教程,游戲素材,課程代碼,需要的可以在評論區(qū)留言聯(lián)系即可。


微信抖音小游戲《黃金礦工》案例詳解的評論 (共 條)

分享到微博請遵守國家法律
杭州市| 华阴市| 桃园市| 南充市| 鲁山县| 哈尔滨市| 天镇县| 纳雍县| 嘉义县| 丹江口市| 耒阳市| 新巴尔虎右旗| 徐汇区| 海南省| 巴塘县| 正镶白旗| 天祝| 邢台县| 松原市| 古浪县| 扶风县| 建德市| 永登县| 尤溪县| 武清区| 津南区| 咸阳市| 晋江市| 榆中县| 祁门县| 行唐县| 隆安县| 商南县| 保山市| 汉源县| 聂荣县| 滨州市| 余江县| 延寿县| 平安县| 天津市|