BGMを再生できるようになったら、次はダメージ音・ボタン音などのサウンドを再生してみましょう。
サウンドをロードする
サウンドは、BGMと違い複数のサウンドを同時に再生することもできます。
まず、tools.pyファイルに汎用的に使えるload_sound()関数を記述します。
引数に渡したファイル名のサウンドをロードし、Soundオブジェクトを返す関数です。
def load_sound(file):
file = os.path.join("data", file)
return pygame.mixer.Sound(file)
続いて、Mainクラス内にゲーム中に使用するサウンドを実際にロードする関数を記述します。
今回は、ダメージを受けた時のSEのみをとりあえずロードします。
ボタン音や回復時の効果音などを追加したい場合は、ここに追加していきます。
def load_sounds(self):
self.damage_sound = tools.load_sound("damage.wav")
これで、self.damage_soundという変数に、Soundオブジェクトが格納されました。
サウンドを再生する
ロードしたサウンドは、play()関数で再生することができます。
今回用意したのはダメージを受けたときのSEなので、collision_detection()関数内に記述しましょう。
def collision_detection(self):
enemy_collided = pygame.sprite.spritecollide(self.player, self.enemies, False)
if enemy_collided:
if self.player.invincible == False:
# SEを再生する
self.damage_sound.play()
self.hp.hp -= 1
self.player.invincible = True
これで、敵との当たり判定があるとダメージ音が再生されるようになります。