Volume sonore
Fait partie de la section Son et sensations de jeu du Journey Pygame de Coddy. Leçon 3 sur 23.
Chaque son possède son propre volume, de 0.0 (silencieux) à 1.0 (aussi fort que le fichier). Un nouveau son démarre à 1.0. Modifiez-le avec set_volume() :
step_sound.set_volume(0.3)Utilisez cette fonction pour équilibrer un jeu. Un bruit de pas qui se fait entendre tout le temps doit être discret ; une explosion rare peut être forte. Une valeur supérieure à 1.0 est considérée comme égale à 1.0 : set_volume(5) joue donc au volume maximal, et non cinq fois plus fort.
Un écran de paramètres affiche souvent le volume sur une échelle de 0 à 10, plus lisible à l'écran. Divisez par 10 pour obtenir la valeur du son :
volume = 5
click_sound.set_volume(volume / 10)Le son conserve son volume jusqu'à ce que vous le régliez de nouveau. Quand le joueur modifie volume, appelez de nouveau set_volume(), sinon le son est joué à l'ancien niveau. get_volume() vous indique le niveau actuel d'un son.
Défi
FacileLes touches Haut et Bas font varier volume de 0 à 10, et la barre d’espace joue le son du clic pour que tu puisses l’entendre. Fais en sorte que le clic suive le réglage :
- Après
volume = 5, appelleclick_sound.set_volume(volume / 10). - Rappelle cette fonction chaque fois que les touches Haut ou Bas modifient
volume.
Essayez vous-même
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()
Toutes les leçons de Son et sensations de jeu
4Tremblement de l’écran et flash d’impact
Tremblement de l’écranFlash d’impactArrêt sur impactRester subtilEntraînez-vous par vous-même : Playground Pygame