【飛機游戲】【Cocos】【P0】創建背景、飛機和子彈-全球動態
時間:2023-06-24 17:40:41
0 使用Cocos Creator引擎開發一個2D的飛機射擊游戲。
0.1 創建背景對象,讓背景滾動起來。
0.2 創建飛機對象,讓飛機跟隨鼠標位置移動。
0.3 創建子彈對象,設定其運動軌跡,并控制子彈的生命周期讓它從飛機上發射出去,離開屏幕范圍后銷毀。
(相關資料圖)
1 創建背景對象,讓背景滾動起來。
1.0 獲取游戲開發素材。素材可在(https://github.com/CodePoisonous/AirPlaneGame)的assets文件夾中獲取。素材內容包括背景圖片,各色飛機的模型、貼圖文件,各色子彈的貼圖文件以及音頻文件。
1.1 啟動引擎(使用的版本是3.7.3),新建一個項目,將資源導入到引擎中。
1.2 在res文件路徑下創建一個back_ground文件夾,在該文件夾下右鍵創建一個名為bg_texture的material資源。將與back_ground文件夾平級的texture文件夾中的bg01貼圖文件關聯到bg_texture中。
1.3 在節點樹上新建一個moving_scene_bg的空節點。在該空節點中創建兩個3D Object的Plane類型節點bg01和bg02。并將之前創建的bg_texture綁定到這兩個Plane節點的Material上。
1.4 將相機的視口調整為正交,調整好相機和兩個Plane(bg01和bg02)的位置和比例,讓兩個背景前后相接的擺放好,相機朝下對準其中的一塊背景圖。?
1.5 在Assets中的Script腳本文件夾中創建一個控制背景圖移動的TypeScript腳本文件。
1.6 背景移動的腳本思路大致是:先綁定兩個背景圖節點,然后讓其同時在z軸正方向逐幀進行移動,當某張圖超出了尺寸界限之后就回滾到初始位置再繼續沿z軸方向移動。?
1.7 背景滾動的效果如下所示。
2 創建飛機對象,讓飛機跟隨鼠標位置移動。
2.0 在Assets的model文件夾中找到Plane01文件夾,里面裝有飛機模型和飛機貼圖資源。在Plane01文件夾中創建一個飛機的Material,將Material的Effect調成builtin-unlit(因為這個游戲不需要考慮光照的問題),再將飛機的紋理圖綁定到這個Material上。?
2.1 在Hierarchy欄里新建一個Plane01的Empty Node。并將飛機的模型貼圖綁到該節點上。再將我們創建的飛機的Material綁到模型節點上。
2.2此時我們可以在場景中看到一個飛機的模型。最后將我們創建的飛機節點保存到Assets的Plane01的文件夾下即可。
2.3 創建完飛機模型之后,我們就需要編寫腳本來控制飛機的移動。當我們按住鼠標左鍵時,需要讓飛機跟隨我們鼠標的移動而移動。在Assets的script文件夾下創建一個ui文件夾,創建一個名為ui_main的腳本文件。(腳本的思路就是利用事件回調函數監控鼠標在左鍵按下時每幀鼠標的移動信息,并根據預設好的飛機移動速度來對飛機在屏幕中的位置進行調整,讓飛機跟隨鼠標的移動而移動。)
2.4 在Hierarchy中創建一個2D Object的sprite節點。將我們編輯好的ui_main腳本掛在sprite節點上。將飛機的節點也掛在到sprite節點上。
2.5 運行程序可得如下效果。
3 創建子彈對象,設定其運動軌跡,并控制子彈的生命周期讓它從飛機上發射出去,離開屏幕范圍后銷毀。
3.0 在Assets的bullet文件夾下找到子彈的貼圖資源,我們先創建一個子彈的Material,將貼圖綁定到Material上。
3.1 在Hierarchy上創建一個Empty Node類型的bullet01節點,再在其下創建一個3D Quad類型的子節點body。將bullet01的Material綁定到body節點上。?
3.2 創建子彈的腳本文件來管理子彈對象的移動軌跡以及子彈對象的銷毀(沿z負方向直線移動,超出屏幕后即可銷毀)。?
3.3 創建兩個Empty Node 節點:bullet_manager和game_manager。
· 其中bullet_manager節點創建的目的是為了讓子彈對象實例化之后能掛載到該節點,只有在節點上的實例化對象才能在屏幕中顯示出來。
· 另一個game_manager節點則是通過使用game_manager腳本來管理和調度整個游戲中對象之間的互動邏輯。?
3.4 game_manager腳本的大體思路就是:
· 先綁定飛機節點對象、子彈節點對象、子彈管理節點對象以及設置好射擊的時間周期和子彈速度。
· 當腳本運行后,我們給飛機設置一個初始位置,并初始化當前射擊時間。
· 在每幀的循環中使用ui_manager腳本獲取鼠標是否被點擊的信息,并將標識傳遞給game_manager。
· 當game_namger腳本識別到鼠標左鍵被按下時,根據射擊時間,周期性的實例化子彈對象,并將子彈對象掛載到場景的子彈管理節點上,并根據當前飛機對象的位置來設置子彈的初始位置。
· 當子彈對象掛載到了子彈管理節點后,節點上綁定的bullet腳本將會運行起來,讓子彈沿著它的運動軌跡飛行起來。?
3.5 運行游戲可看到效果如下。

