Volume del suono
Fa parte della sezione Suoni e sensazioni di gioco del percorso Pygame di Coddy. Lezione 3 di 23.
Ogni Sound ha un proprio volume, da 0.0 (silenzioso) a 1.0 (forte quanto il file). Un nuovo Sound parte da 1.0. Modificalo con set_volume():
step_sound.set_volume(0.3)Usalo per bilanciare un gioco. Un passo che si sente in continuazione dovrebbe essere silenzioso; un'esplosione rara può essere forte. Un valore superiore a 1.0 viene considerato pari a 1.0, quindi set_volume(5) riproduce il suono al volume massimo, non cinque volte più forte.
Una schermata delle impostazioni spesso indica il volume da 0 a 10, un formato più leggibile sullo schermo. Dividi per 10 per ottenere il valore del Sound:
volume = 5
click_sound.set_volume(volume / 10)Il Sound mantiene il volume finché non lo imposti di nuovo. Quando il giocatore modifica volume, richiama set_volume(), altrimenti il Sound viene riprodotto al livello precedente. get_volume() ti indica il livello attuale del Sound.
Sfida
FacileFreccia su e freccia giù modificano volume da 0 a 10, mentre la barra spaziatrice riproduce il clic, così puoi sentirlo. Fai in modo che il clic segua l’impostazione:
- Dopo
volume = 5, chiamaclick_sound.set_volume(volume / 10). - Richiamalo ogni volta che Freccia su o Freccia giù modificano
volume.
Provalo tu
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Volume")
clock = pygame.time.Clock()
font = pygame.font.Font(None, 32)
click_sound = pygame.mixer.Sound("assets/sounds/click.ogg")
volume = 5
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP and volume < 10:
volume += 1
elif event.key == pygame.K_DOWN and volume > 0:
volume -= 1
elif event.key == pygame.K_SPACE:
click_sound.play()
screen.fill((30, 30, 46))
label = font.render(f"Volume: {volume}", True, (240, 240, 240))
screen.blit(label, (40, 120))
for i in range(10):
color = (90, 200, 120) if i < volume else (60, 60, 80)
pygame.draw.rect(screen, color, (40 + i * 40, 170, 32, 40))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Tutte le lezioni di Suoni e sensazioni di gioco
1Effetti sonori
Caricare un suonoSuono al verificarsi di un eventoVolume del suonoSuoni e tasti tenuti premuti4Scuotimento dello schermo e flash all’impatto
Scuotimento dello schermoFlash all’impattoPausa all’impattoMantienilo discretoEsercitati da solo: Playground Pygame