Głośność dźwięku
Część sekcji Dźwięk i odczucia z gry ścieżki Pygame w Coddy. Lekcja 3 z 23.
Każdy dźwięk ma własną głośność, od 0.0 (cisza) do 1.0 (tak głośno, jak w pliku). Nowy dźwięk zaczyna od wartości 1.0. Zmień ją za pomocą set_volume():
step_sound.set_volume(0.3)Użyj tej funkcji, aby zrównoważyć głośność w grze. Odgłos kroków, który odtwarza się cały czas, powinien być cichy; rzadki wybuch może być głośny. Wartość większa niż 1.0 jest traktowana jak 1.0, więc set_volume(5) odtwarza dźwięk z pełną głośnością, a nie pięć razy głośniej.
Ekran ustawień często przedstawia głośność w skali od 0 do 10, co lepiej wygląda na ekranie. Podziel wartość przez 10, aby uzyskać wartość dźwięku:
volume = 5
click_sound.set_volume(volume / 10)Dźwięk zachowuje swoją głośność, dopóki nie ustawisz jej ponownie. Gdy gracz zmieni volume, ponownie wywołaj set_volume(), w przeciwnym razie dźwięk będzie odtwarzany z poprzednim poziomem głośności. get_volume() informuje, jaki poziom głośności ma teraz dźwięk.
Wyzwanie
ŁatwyKlawisze strzałek w górę i w dół zmieniają volume od 0 do 10, a spacja odtwarza kliknięcie, żeby można było je usłyszeć. Dopasuj kliknięcie do ustawienia:
- Po
volume = 5wywołajclick_sound.set_volume(volume / 10). - Wywołuj tę funkcję ponownie za każdym razem, gdy klawisz strzałki w górę lub w dół zmienia
volume.
Spróbuj swoich sił
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()
Wszystkie lekcje w sekcji Dźwięk i odczucia z gry
1Efekty dźwiękowe
Wczytywanie dźwiękuDźwięk w reakcji na zdarzenieGłośność dźwiękuDźwięki i przytrzymane klawisze4Wstrząs ekranu i błysk po trafieniu
Wstrząs ekranuBłysk po trafieniuPauza przy trafieniuNie przesadzajPoćwicz samodzielnie: Edytor online Pygame