当たり判定を実装し敵と衝突したらゲームオーバーと表示する【Python】

前回の記事で、キーボードの入力からプレイヤーを動かせるようにしました。

プレイヤーが動くのであれば、当然敵が出てくるのが必然です。

というわけで、今回は敵をフィールドに出現させて、衝突したらゲームオーバーと表示するようにしたいと思います。

スポンサーリンク

当たり判定を実装し敵と衝突したらゲームオーバーと表示する

とりあえず敵を動かすことはせず、適当な位置に出現させてプレイヤーの操作で自ら敵に衝突してみようと思います。何でも構わないので敵となる画像を用意しておきましょう。

前の記事で作成した「playermove」スクリプトを開いて修正を行っていきます。

こちらが修正したスクリプトになります。

シーンの切り替えは行いませんが、タイトル、メイン、ゲームオーバーなどの各シーンを管理するためのscene変数を作りました。

このスクリプトで言うと0ならゲームプレイ中、1ならゲームオーバーとなります。

シーン変数が0ならキーボードの入力により操作が可能なので、move_enemy関数でプレイヤーと敵の当たり判定を行います。

当たり判定を行う式は、円における判定方法を使用しています。ルートを使っても良いんですけど、mathモジュールをインポートする必要があるので、このような記述にしています。

プレイヤーと敵それぞれ「32px×32px」の画像を使っているので32ドット未満になったら当たりとみなしてシーン変数を1に変えて中央にゲームオーバーとテキストを表示します。

敵と衝突したらゲームオーバーと表示する

実際にゲームを実行してみます。

画面上部に堂々と待ち構えている敵にぶつかってみましょう。ゲームオーバーとなってキー入力が無効になればOKです。次回は敵の動きについて考えていきます。