【飛機(jī)游戲】【Cocos】【P1】創(chuàng)建敵機(jī)及發(fā)射敵機(jī)子彈

0 上一章我們創(chuàng)建了能夠滾動(dòng)向下的背景對(duì)象,可操控任意移動(dòng)的玩家飛機(jī)對(duì)象,點(diǎn)擊屏幕即可發(fā)射的玩家子彈對(duì)象。本期我們將:
0.1 以不同的組合方式創(chuàng)建敵機(jī)對(duì)象。
0.2 創(chuàng)建敵機(jī)上自動(dòng)發(fā)射的子彈對(duì)象。

?
1 以不同的組合方式創(chuàng)建敵機(jī)對(duì)象。
1.0 把敵機(jī)的模型和紋理對(duì)象綁定到敵機(jī)節(jié)點(diǎn)Plane02和Plane03上。(方法與Plane01的玩家飛機(jī)節(jié)點(diǎn)生成方式相同)。

1.1 在Assets的Plane文件夾下的enemy_plane腳本文件中設(shè)置敵機(jī)運(yùn)動(dòng)邏輯和敵機(jī)銷毀邏輯的代碼。


1.2 在Assets文件夾下的game_manager腳本中編寫敵機(jī)生成邏輯的代碼。我們將使用定時(shí)器來觸發(fā)回調(diào)函數(shù)調(diào)整關(guān)卡數(shù)量,再根據(jù)3種不同的關(guān)卡數(shù),生成對(duì)應(yīng)不同組合類型的敵機(jī)對(duì)象。

1.3 三種敵機(jī)組合的方式及效果如下:
(1)敵機(jī)組合1為兩種類型的敵機(jī)隨機(jī)出現(xiàn)一架。


(2)敵機(jī)組合2為兩種類型的敵機(jī)隨機(jī)出現(xiàn)一字型隊(duì)列。?

?

(3)敵機(jī)組合3為兩種類型的敵機(jī)隨機(jī)出現(xiàn)V字型隊(duì)列。



?
2 創(chuàng)建敵機(jī)上自動(dòng)發(fā)射的子彈對(duì)象。
2.0 上一張我們創(chuàng)建的子彈bullet01既可以做玩家的子彈素材,也可以做敵機(jī)的子彈素材。

2.1 我們?cè)谝圆煌M合的方式創(chuàng)建敵機(jī)時(shí),需要根據(jù)我們創(chuàng)建的敵機(jī)組合來判斷該敵機(jī)是否需要?jiǎng)?chuàng)建敵機(jī)子彈。目前我們的規(guī)則是組合1的敵機(jī)需要有敵機(jī)子彈,組合2、3的敵機(jī)不需要敵機(jī)子彈,所以我們?cè)诮M合1邏輯里面敵機(jī)的set speed()接口中傳入true來表示我們需要該敵機(jī)創(chuàng)建子彈對(duì)象。

2.2 我們?cè)跀硻C(jī)腳本enemy_plane上根據(jù)是否創(chuàng)建敵機(jī)子彈的條件來創(chuàng)建敵機(jī)子彈的對(duì)像。如果需要?jiǎng)?chuàng)建子彈的話,將調(diào)用game_manager里的子彈實(shí)例化接口。


2.3 實(shí)例敵機(jī)子彈的對(duì)象后,需要調(diào)用子彈的腳本Bullet的子彈運(yùn)動(dòng)邏輯及子彈銷毀邏輯。此時(shí)子彈的運(yùn)動(dòng)邏輯需分開考慮玩家的子彈和敵機(jī)子彈的運(yùn)動(dòng)軌跡(玩家子彈的運(yùn)動(dòng)方向?yàn)檠貁軸負(fù)方向運(yùn)動(dòng),敵機(jī)子彈為正方向)。

2.4 敵機(jī)子彈的生成效果如下:

2.5 最后讓我們來看一下整體的效果如何。

?

2.6 從運(yùn)行的結(jié)果來看,一字型排開的飛機(jī)數(shù)量龐大且烏泱泱的往下掉。說明我們的隨機(jī)算法在敵機(jī)組合不多的情況下,得到的隨機(jī)結(jié)果并不理想。敵機(jī)的大小比例和運(yùn)行速度也不太合理。在之后的章節(jié)我們還需再對(duì)其做進(jìn)一步的優(yōu)化。

