シューティングゲームを作ろう その6 |
10.種類1番の敵 |
1番の敵は、下から現れて斜め上に動きます。
10-1.種類1番の敵の出現 |
;敵の出現 ・ ・ ・ switch enemy_kind(n) case 0: ・ ・ ・ case 1: enemy_x(n) = rnd(GWIDTH - 32 + 1) enemy_y(n) = GHEIGHT if enemy_x(n) + 16 >= GWIDTH / 2 { enemy_dx(n) = -2 } else { enemy_dx(n) = 2 } enemy_dy(n) = -1 swbreak case 2: ・ ・ ・
この敵はただ斜め上に動くだけで、第何段階というものはありません。ですからenemy_phaseは使いません。
出現位置は、x座標は0 〜 GWIDTH - 32、y座標はGHEIGHTとします。画面右側に出したら左斜め上に、左側に出したら右斜め上に動くようにenemy_dx(n)、enemy_dy(n)を設定します。そうするとバランスがいいと思われます。一度に上に1ドット、横に2ドット動くものとします。
一見、enemy_x(n)がGWIDTH / 2以上であれば画面右側にいる、としても良いように思えます。
赤い線は画面中央を表します。
ではこの場合はどうでしょうか。
この場合も、右にいます。つまり敵の中心座標が画面右側にあれば右、左側にあれば左にいるものとします。
10-2.種類1番の敵の移動 |
;敵の移動 ・ ・ ・ switch enemy_kind(i) case 0: ・ ・ ・ case 1: if enemy_x(i) <= -32 | enemy_x(i) >= GWIDTH { enemy_state(i) = 0 } swbreak case 2: ・ ・ ・
敵が画面左端または右端からはみだしたら消します。
11.種類2番の敵 |
2番の敵は、画面左端か右端から現れてやや斜め下に動き、画面を横切ります。
11-1.種類2番の敵の出現 |
;敵の出現 ・ ・ ・ switch enemy_kind(n) case 0: ・ ・ ・ case 1: ・ ・ ・ case 2: if rnd(2) == 0 { enemy_x(n) = -32 } else { enemy_x(n) = GWIDTH } enemy_y(n) = rnd(GHEIGHT / 2 + 1) if enemy_x(n) == -32 { enemy_dx(n) = 3 } else { enemy_dx(n) = -3 } enemy_dy(n) = 1 swbreak swend ・ ・ ・
x座標は、左から現れるか、右から現れるかをランダムに決めます。y座標は、0 〜 GHEIGHT / 2とします。つまり画面の上の方です。左から現れる場合はenemy_dx(n) = 3(右向き)、右から現れる場合はenemy_dx(n) = -3(左向き)とします。一度に下に1ドット、横に3ドット動くものとします。
11-2.種類2番の敵の移動 |
;敵の移動 ・ ・ ・ switch enemy_kind(i) case 0: ・ ・ ・ case 1: ・ ・ ・ case 2: if enemy_dx(i) == -3 & enemy_x(i) <= -32 { enemy_state(i) = 0 } if enemy_dx(i) == 3 & enemy_x(i) >= GWIDTH { enemy_state(i) = 0 } swbreak swend ・ ・ ・
左向きに動いていて画面左端からはみ出した場合と、右向きに動いていて右端からはみ出した場合に消します。