如何播放设定次数的声音

问题描述 投票:0回答:1
import pygame

pygame.init()
pygame.mixer.init()

clock = pygame.time.Clock()

walking = pygame.mixer.Sound("Walk.mp3")  

run = True

while run:


    # Your game logic and drawing code will go here
    if pygame.key.get_pressed()[pygame.K_SPACE]:
        walking.play()

    pygame.display.update()
    clock.tick(30)


所以我有这段代码,我想让我的非常短的声音(不到一秒长)每秒播放多次,但它似乎只受到 fps 和括号中的数字的影响,但我希望它只受括号内的数字影响

我尝试更改数字,但它仍然经常播放,因为它每帧播放一次而不是每秒播放一次

python audio pygame pygame-clock pygame-mixer
1个回答
0
投票

要控制声音播放的频率,您需要引入一种机制来确保声音按指定的间隔播放,而不是每帧播放。

import pygame  
import time

pygame.init()
pygame.mixer.init()

clock = pygame.time.Clock()
walking = pygame.mixer.Sound("Walk.mp3")

run = True

sound_interval = 0.5 #seconds (change to your desired interval)
last_played_time = 0

while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    keys = pygame.key.get_pressed()
    current_time = time.time()

    if keys[pygame.K_SPACE] and (current_time - last_played_time) >= sound_interval:
        walking.play()
        last_played_time = current_time

    # your game logic and drawing code will go here
    pygame.display.update()
    clock.tick(30)
pygame.quit()

所做的更改:

  1. 时间跟踪:添加了
    last_played_time
    以跟踪上次播放声音的时间。
  2. 间隔控制:使用
    sound_interval
    定义声音播放的频率。将根据当前时间进行检查,以确定自上次播放以来是否已经过去了足够的时间。
  3. 事件处理:添加了一个基本处理循环以允许退出游戏。
© www.soinside.com 2019 - 2024. All rights reserved.