シューティングゲーム作成入門トップに戻るボスを作ろう1(出現)今回からはボスの作成にとりかかっていきます。今回はボスを出現させるところまで説明します。画像はコチラを使います。最終的にはコレを少し明るめにした画像の合計2枚を使います。どのように出現させるかというと、画面上から「すーっ」と滑らかに出現して、ふわふわと浮かせる状態にさせます。浮かせる為には、前回の追跡弾の光の弾で説明したsin波を使うので、それに伴う角度の増加量や角度の合計用の変数を用意する必要があります。BOSSクラスのヘッダーファイルとコンストラクタを見てください。前の位置の座標を表しています。グラフィックハンドルは、ボスのキャラ画像と弾画像用の配列を用意します。キャラが画像は通常時の画像と弾がヒットした時の画像の2枚分の配列を用意してます。弾は3種類使うので要素数が三つの配列を用意してます。ボスの移動に関しては、move_patternの値に従って動作させることにします。他の変数は、とりあえず以下のものだけ気にして下さい。他の変数は次回以降に説明します。movex,movey;変数の意味は書いてある通りです。次にコンストラクタを見てください。初期座標を代入しています。移動前の座標も一緒にしておきます。sin値に使う際の角度の増加量を示すraiseは2にしておきます。move_patternは0にしておきます。これは登場時に移動パターンを示します。横の移動距離は変わりません。上から80ピクセルぐらいの距離にいれば敵全体が見えます。移動距離としては180になります。moveyには180を代入しています。次にmove_patternの値によって、ボスの移動動作を分岐させます。そのためにMove関数を作ります。3:MovePattern3();break;}}上記のswitch文を見てもらえればわかりますが、move_patternの値によって処理を分岐させています。今回の講座で説明するのは、Appear関数とMovePattern1関数です。Appear関数がボスが上から登場して定位置に移動するまでの関数で、MovePattern1関数がふわふわと上下に移動させるための関数です。Appear関数の説明から行います。prev_y+temp*movey;//提位置まで移動したら移動パターンを1に変更if(angle==90){move_pattern=1;angle=0;}}まず、合計角度であるangleを2ずつ増加させてます。その次に、追跡弾の章でも説明したとおり、angleをラジアンに変換して、sin値を得ています。x座標についてはそのまま上から登場して横に移動しないので200のままで座標は変化ありません。y座標については、前回の座標prev_yにsin値tempと目的地までの距離moveyをかけています。目的の位置の座標に移動できるようになります。sin値の増加量は滑らかに増加するので、動きも滑らかに移動させることが出来るわけです。その下のif文で、angleが90に達すると、move_patternを1に設定し、angleを0に戻してます。move_patternを1にすると上記のmove関数で説明したとおり、MovePattern1関数が実行されることになります。MovePattern1関数は以下のとおりになっています。if(angle==-90){raise=2;}x=200;}基本的には先ほどのAppear関数とあまり変わりません。20;というように定義してます。これは振れ幅を表しています。追跡弾のところで説明したのでわかりますよね?最終的には+80足して座標を計算しています。80というのはボスがふわふわ移動せずに停止していた場合の定位置です。定位置を基準にして振れ幅の分だけふわふわと移動することになります。その下のif文では90か-90に達したときに、角度の増加量raiseの値を反転させてます。することでふわふわと移動させることができます。最後にDraw関数とAll関数です。BOSS::All(){Move();Draw();}特に難しくありません。今はまだ使いませんが、ボスに弾が当たったときはdamageflagを立てるようにするつもりです。その時だけ少し明るめのダメージ専用の画像を描画するようにしたいので、フラグが立っているときだけダメージ用の画像を描画するようにしています。フラグは毎回戻すようにしています。All関数はただMove関数と、Draw関数を実行しているだけです。以下の動画のようにボスを出現させることができます。次回は移動パターンを増やしてみましょう。メニューレイアウト変更。ブラウザキャッシュのクリアをお願い致します。レイアウト変更に伴いブラウザキャッシュのクリアをお願いします。TOPページのデザインを変更。相互リンクページに、複数サイト追加。C言語学習ページ発展編(1~9章)追加。HTML/CSSリファレンスのページ追加。