衝突判定を実装
プレイヤーがブロックに当たったらゲームオーバーとしたい
判定方法
まず、2者間の衝突を考える
考え方
四角形 A と四角形 B が衝突しているかどうかを確認する方法:
- A, B の x 軸 方向での距離が十分に開いていたら、衝突していない
- A, B の y 軸 方向での距離が十分に開いていたら、衝突していない
- 以上いずれでもないなら、衝突している
説明用スケッチ (クリックで開く)
2者間の衝突を判定する関数
上記をそのまま実装すると次のようになる
|
|
ここで、「衝突しないギリギリの距離」は次の通り
- x軸方向:
(A の幅の半分) + (B の幅の半分)
- y軸方向:
(A の高さの半分) + (B の高さの半分)
実装
- 上述の衝突判定関数を用意する
- プレイヤー 対 各ブロック について判定し、衝突していたらゲームオーバー
|
|
動かしてみてみましょう。
プレイヤーがブロックに当たったらゲームオーバーになることを確認してください。
一区切り
以上で、Flappy Bird ライクなゲームの基本的なルールが一通り実装できました。
おめでとうございます!さて、本当に面白いのは、これをベースにしてどんなふうにでもアレンジできる上に、
同じ骨組みを使って全く別のゲームも作れてしまうという点です。この先もぜひ自由に改造してみましょう。
「アレンジいろいろ」 にていくつか選択肢を示していますが、
他にも可能性は無限大です。