2

Pygame のミキサー モジュールにpygame.mixer.get_busyは、単純なブール値を返すものがあります。
私の問題は、爆発や銃声などのサウンドが常に再生されており、ゲームの会話が重複しないようにするために、特定のサウンドがいつ再生されているかを知る必要があることです。

現在再生中のダイアログのリストを作成し、各サウンドがトリガーされるたびにカウントダウンするタイマーを作成することを検討しましたが、メインのゲーム ループにサウンド エフェクト (サウンドを処理するモジュール) の更新を追加する必要があります。
これは厄介なようで、巨大なスローダウンのようです。

これを行うためのよりクリーンな方法はありますか?

4

1 に答える 1

7

チャネル オブジェクトを使用できます。

チャンネルで特定の種類のオーディオを再生し、サウンドが再生されているかどうかを確認します。

import pygame

def main(filepath):
    pygame.mixer.init()

    # If you want more channels, change 8 to a desired number. 8 is the default number of channel

    pygame.mixer.set_num_channels(8)

    # This is the sound channel
    voice = pygame.mixer.Channel(5)

    sound = pygame.mixer.Sound(filepath)

    voice.play(sound)

    if voice.get_busy():
        #Do Something
于 2013-01-21T07:44:45.540 に答える