【飛機(jī)游戲】【Cocos】【P0】創(chuàng)建背景、飛機(jī)和子彈

0 使用Cocos Creator引擎開發(fā)一個2D的飛機(jī)射擊游戲。
0.1 創(chuàng)建背景對象,讓背景滾動起來。
0.2 創(chuàng)建飛機(jī)對象,讓飛機(jī)跟隨鼠標(biāo)位置移動。
0.3 創(chuàng)建子彈對象,設(shè)定其運動軌跡,并控制子彈的生命周期讓它從飛機(jī)上發(fā)射出去,離開屏幕范圍后銷毀。

1 創(chuàng)建背景對象,讓背景滾動起來。
1.0 獲取游戲開發(fā)素材。素材可在(https://github.com/CodePoisonous/AirPlaneGame)的assets文件夾中獲取。素材內(nèi)容包括背景圖片,各色飛機(jī)的模型、貼圖文件,各色子彈的貼圖文件以及音頻文件。

1.1 啟動引擎(使用的版本是3.7.3),新建一個項目,將資源導(dǎo)入到引擎中。


1.2 在res文件路徑下創(chuàng)建一個back_ground文件夾,在該文件夾下右鍵創(chuàng)建一個名為bg_texture的material資源。將與back_ground文件夾平級的texture文件夾中的bg01貼圖文件關(guān)聯(lián)到bg_texture中。

?

1.3 在節(jié)點樹上新建一個moving_scene_bg的空節(jié)點。在該空節(jié)點中創(chuàng)建兩個3D Object的Plane類型節(jié)點bg01和bg02。并將之前創(chuàng)建的bg_texture綁定到這兩個Plane節(jié)點的Material上。

?

1.4 將相機(jī)的視口調(diào)整為正交,調(diào)整好相機(jī)和兩個Plane(bg01和bg02)的位置和比例,讓兩個背景前后相接的擺放好,相機(jī)朝下對準(zhǔn)其中的一塊背景圖。?

?

1.5 在Assets中的Script腳本文件夾中創(chuàng)建一個控制背景圖移動的TypeScript腳本文件。

1.6 背景移動的腳本思路大致是:先綁定兩個背景圖節(jié)點,然后讓其同時在z軸正方向逐幀進(jìn)行移動,當(dāng)某張圖超出了尺寸界限之后就回滾到初始位置再繼續(xù)沿z軸方向移動。?


1.7 背景滾動的效果如下所示。


2 創(chuàng)建飛機(jī)對象,讓飛機(jī)跟隨鼠標(biāo)位置移動。
2.0 在Assets的model文件夾中找到Plane01文件夾,里面裝有飛機(jī)模型和飛機(jī)貼圖資源。在Plane01文件夾中創(chuàng)建一個飛機(jī)的Material,將Material的Effect調(diào)成builtin-unlit(因為這個游戲不需要考慮光照的問題),再將飛機(jī)的紋理圖綁定到這個Material上。?

?

2.1 在Hierarchy欄里新建一個Plane01的Empty Node。并將飛機(jī)的模型貼圖綁到該節(jié)點上。再將我們創(chuàng)建的飛機(jī)的Material綁到模型節(jié)點上。

?

?

2.2此時我們可以在場景中看到一個飛機(jī)的模型。最后將我們創(chuàng)建的飛機(jī)節(jié)點保存到Assets的Plane01的文件夾下即可。

2.3 創(chuàng)建完飛機(jī)模型之后,我們就需要編寫腳本來控制飛機(jī)的移動。當(dāng)我們按住鼠標(biāo)左鍵時,需要讓飛機(jī)跟隨我們鼠標(biāo)的移動而移動。在Assets的script文件夾下創(chuàng)建一個ui文件夾,創(chuàng)建一個名為ui_main的腳本文件。(腳本的思路就是利用事件回調(diào)函數(shù)監(jiān)控鼠標(biāo)在左鍵按下時每幀鼠標(biāo)的移動信息,并根據(jù)預(yù)設(shè)好的飛機(jī)移動速度來對飛機(jī)在屏幕中的位置進(jìn)行調(diào)整,讓飛機(jī)跟隨鼠標(biāo)的移動而移動。)

?

2.4 在Hierarchy中創(chuàng)建一個2D Object的sprite節(jié)點。將我們編輯好的ui_main腳本掛在sprite節(jié)點上。將飛機(jī)的節(jié)點也掛在到sprite節(jié)點上。

?

2.5 運行程序可得如下效果。


3 創(chuàng)建子彈對象,設(shè)定其運動軌跡,并控制子彈的生命周期讓它從飛機(jī)上發(fā)射出去,離開屏幕范圍后銷毀。
3.0 在Assets的bullet文件夾下找到子彈的貼圖資源,我們先創(chuàng)建一個子彈的Material,將貼圖綁定到Material上。

?

3.1 在Hierarchy上創(chuàng)建一個Empty Node類型的bullet01節(jié)點,再在其下創(chuàng)建一個3D Quad類型的子節(jié)點body。將bullet01的Material綁定到body節(jié)點上。?

?

3.2 創(chuàng)建子彈的腳本文件來管理子彈對象的移動軌跡以及子彈對象的銷毀(沿z負(fù)方向直線移動,超出屏幕后即可銷毀)。?

?

3.3 創(chuàng)建兩個Empty Node 節(jié)點:bullet_manager和game_manager。
· 其中bullet_manager節(jié)點創(chuàng)建的目的是為了讓子彈對象實例化之后能掛載到該節(jié)點,只有在節(jié)點上的實例化對象才能在屏幕中顯示出來。
· 另一個game_manager節(jié)點則是通過使用game_manager腳本來管理和調(diào)度整個游戲中對象之間的互動邏輯。?

?

3.4 game_manager腳本的大體思路就是:
· 先綁定飛機(jī)節(jié)點對象、子彈節(jié)點對象、子彈管理節(jié)點對象以及設(shè)置好射擊的時間周期和子彈速度。
· 當(dāng)腳本運行后,我們給飛機(jī)設(shè)置一個初始位置,并初始化當(dāng)前射擊時間。
· 在每幀的循環(huán)中使用ui_manager腳本獲取鼠標(biāo)是否被點擊的信息,并將標(biāo)識傳遞給game_manager。
· 當(dāng)game_namger腳本識別到鼠標(biāo)左鍵被按下時,根據(jù)射擊時間,周期性的實例化子彈對象,并將子彈對象掛載到場景的子彈管理節(jié)點上,并根據(jù)當(dāng)前飛機(jī)對象的位置來設(shè)置子彈的初始位置。
· 當(dāng)子彈對象掛載到了子彈管理節(jié)點后,節(jié)點上綁定的bullet腳本將會運行起來,讓子彈沿著它的運動軌跡飛行起來。?

?

3.5 運行游戲可看到效果如下。

