今回は、当たり判定をするんでしたよね?うん、そうだよ。今回は、自機の弾と敵、自機と敵、自機と敵の弾の当たり判定を作って、当たった時に敵が消えたり、ゲームオーバーになったりする処理をやっていくよ。それじゃ、さっそく初めてみよう!~関数を作ろう!それじゃ、まずはモノとモノとの当たり判定を行う関数を作っていこう!関数、ですか?うん。この関数を、それぞれ(自機の弾と敵の時、自機と敵の時、自機と敵の弾の時)で使いまわすようにしていくんだ。すれば、処理がシンプルになるでしょ?なるほどっ。私のこの講座に引きずり込んだ先輩ですっ。引きずり込んだんじゃないってばぁ......。ん、それじゃ続いて、当たり判定の考え方ね。これが当たっている状態ね。当たっている状態というのは、中心同士の距離が、二つのものの幅の半分の合計より小さい状態なんですね!そういうこと。なっているかどうか判定して、条件が成立したら、当たっているという判定を返せばいいんだよ。いうわけで、それを関数にしたものがこちらです!まず、p〇1とついているのは物体(自機や弾、敵など)1の位置や大きさの情報。p〇2とついてるのは物体2の情報だよ。12行目から16行目まで(赤枠の部分)では、各物体の中心の位置を計算しているよ。18行目からがいよいよ本番。中心の間の距離と、幅(高さ)の半分の合計を計算し(青枠の部分)、そしてこれを比べて、当たっていれば、1を返し、そうでなければ0を返すようにしてるんだ(緑枠の部分)。あ、先輩、このAbsっていうのはなんなんですか?うん。それは、引数の絶対値を返す関数だよ。簡単に言うと、値のマイナスを取って返してくれるもの。これを使わないと、比較するために、値が正の数かどうかチェックして、負の数だったら正の数に直す手間がかかるからね。それじゃ、次はこの関数を使って行こう!~関数を使おう!まずは、自機の弾と敵との当たり判定ね。全ての自機弾と敵のデータをチェックして、双方ともある組み合わせの時のみ、判定の関数を呼び出して判定する、という形。いうわけで、そのためのサブプロシージャがこちら!続いて、自機と敵、自機と敵の弾の当たり判定だよ。こちらも考え方は、さっきと同じ。自機は一機しかいないし、自機に当たったらゲームオーバー画面に行くので、自機があるかどうかの判定はしてないところが違うの。これができたところで、これらの関数をGameMainサブプロシージャに組み込もうか。次のコードをGameMainサブプロシージャに付け加えてね。↑書き直した後のGameMainがこちら。(赤枠が追加した部分です)なお今回は、ゲームオーバーの処理は作ってないから、敵や弾に当たったら画面が黒くなるだけになってる。そこらへんは次回にやっていくよ。こちらの弾で敵を倒せたり、弾や敵に当たったら画面が黒くなるようになりましたよ!それでは今回はここまで。次回はいよいよラスト。スコアをいれたり、タイトルやゲームオーバー画面を入れたり、BGMを入れたりしていくよ。!==========※次の更新は、『師匠TのチャレンジARSゲーム』の予定です。|この記事へのコメントコメントを書くコチラをクリックしてくださいSeesaaブログ。