サウンドを再生する

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

これで、敵との当たり判定があるとダメージ音が再生されるようになります。