Громкость звука
Часть раздела Звук и игровые ощущения путешествия по Pygame на Coddy. Урок 3 из 23.
У каждого звука есть собственная громкость — от 0.0 (без звука) до 1.0 (громкость файла). Новый звук изначально воспроизводится с громкостью 1.0. Измените её с помощью set_volume():
step_sound.set_volume(0.3)Используйте это, чтобы сбалансировать громкость в игре. Шаги, которые звучат постоянно, должны быть тихими, а редкий взрыв может быть громким. Значение выше 1.0 считается равным 1.0, поэтому set_volume(5) воспроизводит звук на полной громкости, а не в пять раз громче.
На экране настроек громкость часто задаётся числом от 0 до 10 — так её удобнее отображать. Разделите число на 10, чтобы получить значение громкости звука:
volume = 5
click_sound.set_volume(volume / 10)Громкость звука сохраняется, пока вы не зададите её снова. Когда игрок меняет volume, снова вызовите set_volume(), иначе звук будет воспроизводиться с прежней громкостью. get_volume() сообщает текущую громкость звука.
Задание
ЛегкоКлавиши Up и Down изменяют volume от 0 до 10, а Space воспроизводит щелчок, чтобы ты мог его услышать. Настрой воспроизведение щелчка в соответствии с заданным уровнем громкости:
- После
volume = 5вызовиclick_sound.set_volume(volume / 10). - Вызывай эту функцию снова каждый раз, когда Up или Down изменяют
volume.
Попробуйте сами
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()
Все уроки раздела Звук и игровые ощущения
4Тряска экрана и вспышка при попадании
Тряска экранаВспышка при попаданииОстановка при попаданииСоблюдайте умеренность6Доведём «Звёздный патруль» до блеска
Звуки «Звёздного патруля»Искры при каждом попаданииПотренируйтесь самостоятельно: Песочница Pygame