前回の記事で、キーボードの入力からプレイヤーを動かせるようにしました。
プレイヤーが動くのであれば、当然敵が出てくるのが必然です。
というわけで、今回は敵をフィールドに出現させて、衝突したらゲームオーバーと表示するようにしたいと思います。
当たり判定を実装し敵と衝突したらゲームオーバーと表示する
とりあえず敵を動かすことはせず、適当な位置に出現させてプレイヤーの操作で自ら敵に衝突してみようと思います。何でも構わないので敵となる画像を用意しておきましょう。
前の記事で作成した「playermove」スクリプトを開いて修正を行っていきます。
こちらが修正したスクリプトになります。
シーンの切り替えは行いませんが、タイトル、メイン、ゲームオーバーなどの各シーンを管理するためのscene変数を作りました。
このスクリプトで言うと0ならゲームプレイ中、1ならゲームオーバーとなります。
シーン変数が0ならキーボードの入力により操作が可能なので、move_enemy関数でプレイヤーと敵の当たり判定を行います。
当たり判定を行う式は、円における判定方法を使用しています。ルートを使っても良いんですけど、mathモジュールをインポートする必要があるので、このような記述にしています。
プレイヤーと敵それぞれ「32px×32px」の画像を使っているので32ドット未満になったら当たりとみなしてシーン変数を1に変えて中央にゲームオーバーとテキストを表示します。
実際にゲームを実行してみます。
画面上部に堂々と待ち構えている敵にぶつかってみましょう。ゲームオーバーとなってキー入力が無効になればOKです。次回は敵の動きについて考えていきます。