第33章.「スプライト同士の当たり判定」


 スプライト同士の当たり判定には、さまざまな方法があり、作品の内容によって適した方法が変化するので、とりあえず簡単な例で基本的な事を学びましょう!

 まず、当たり判定の準備として、SPCOL という命令を使います。

 この設定をしておかないと、当たり判定はできません!

 次に、実際の当たり判定は、SPHITSP という命令を使います。

 SPCOL で設定した範囲を使って当たり判定をするので、上手くいかなかった時は、SPCOL の設定を変えると良い場合もあります。

 また、SPHIPSP にも複数の方法があるため、作品の内容によって変えると良い場合があります。



 なるべく簡単な例にするため、ビリヤード風の球の動きで当たり判定をしてみましょう。

 球の数も4つにして、入力する量を減らしています。

 ビリヤードのゲームを作る場合は、球の数を増やして、その全てに当たり判定を設定する必要があります!

 第32章でタッチ操作の基本と応用を学んでいれば、このサンプルはそんなに難しくないでしょう。

 当たり判定の部分だけ注意してください!

 入力したプログラムを実行(RUN)すると、この画像のように表示されます。

 画面のどこかをタッチすれば、白い球がそこに動いて行きます。

 3色の球のどれかに当たれば、音がして弾かれます。(当たり判定)

 もし、どれにも当たらなければ、観客の残念がる声が聞こえます。

 つまり、全く当たらなかった場合でも、当たり判定は成立しています!

 スプライト同士が当たったか当たらなかったかを判定するのが当たり判定です。

 当たり判定が不成立(失敗した)というのは、当たっているはずなのに当たっていないと判断されたり、当たっていないはずなのに当たっていると判断された場合です。

 そうなった場合には、原因を調べてプログラムを修正しましょう!

 プログラムを終了するには、何かボタンを押してください!



 実際のビリヤードでは、今回のような単純な当たり判定ではなく、それぞれの球がぶつかる可能性がありますし、白い球の位置もいろいろな場所に変化するので、転がる方向もさまざまですし、当たり方によって球の動く方向も変わります。

 ゲームとして完成させるには、そういった事を全て設定しなければなりません!

 でも、当たり判定の基本は、今回のサンプルで学んだ通り、SPCOLSPHITSP を使うことで可能になります。

 後は、それを応用していくだけです!

 ビリヤード風のサンプルで、スプライト同士の当たり判定の基礎は充分だと思いますが、一対一の判定だけだったので、一対多数の判定の良いサンプルは無いかと考えました。

 それで、クレーンゲーム(スティックアームタイプ)なら初心者向けにできるのではないかと思ったのですが、実際に作ってみると意外に当たり判定の設定が上手くいかず、初心者向けでない気がしてしまいました。

 なので、あまりお勧めできないと思っていますが、それでも良いと思う人が多いなら、応用編として追加するかもしれません。