シューティングゲームにおけるBGMとSEの実装例【Pygame】

ある程度ゲームの枠組みが完成したところで、BGMとSEを実装し、よりゲームと呼べるものにグレードアップしましょう。

スポンサーリンク

シューティングゲームにおけるBGMとSEの実装【Pygame】

まずは、BGMとSEを発生させるタイミングを考えていきましょう。

  • ゲーム中に流すBGM
  • ゲームクリア時のBGM
  • ゲームオーバー時のBGM
  • プレイヤーが弾を発射する際のSE
  • プレイヤーがダメージを受けた際のSE
  • 敵を倒した際のSE

箇条書きにしてみましたが、最低でもこれぐらいのBGM及びSEが必要になりますね。ゲームクリアとゲームオーバーの際に流れるのは厳密に言うとジングルといって、ラジオ番組でコーナーが切り替わるタイミングで流れるような短い音楽なんですけどね。

これらの要点を踏まえて、プログラムに修正を加えていきます。

シューティングゲームにサウンド命令を追記する

PygameでBGMを流したい場合は「pygame.mixer.music.load(〇〇)」でロードして、play(引数)で再生出来ます。また、SEの場合は「pygame.mixer.Sound(○○)」で読み込んでplay()で再生します。

まずは、タイトル画面からゲームプレイ画面に進んだ時点でフィールドBGMを流します。無限ループさせたいので引数には「-1」を指定します。(236~237行目)

ゲームオーバー及びゲームクリア画面に移行したら、「pygame.mixer.music.stop()」でメインBGMを停止させて、各ジングルを再生させます。ここでは、無限ループさせる必要はないので、引数には「0」を指定します。

ジングルの長さをチェックしながら、タイマー変数を調整して、タイトル画面に戻すようにすると良いと思います。

SEに関しては、各タイミングに対応するSE変数を用意してファイルを読み込むようにします。

後は、SEを再生させたいタイミングにて「変数.play()」と記述すればOKです。

 

ゲームを実行して、BGMとSEが意図した通り再生されるか確認しましょう。私の録画環境が悪くこの動画では若干音ズレしていますが、正しいタイミングで再生出来ています。

BGMとSEを付け加えたことによって、ゲームプレイに爽快感が生まれると思います。