Volume do Som
Parte da seção Som e sensação de jogo do Journey de Pygame da Coddy. Lição 3 de 23.
Cada som tem seu próprio volume, de 0.0 (silencioso) a 1.0 (no volume máximo do arquivo). Um novo som começa em 1.0. Altere-o com set_volume():
step_sound.set_volume(0.3)Use isso para equilibrar um jogo. Um passo que toca o tempo todo deve ser baixo; uma explosão rara pode ser alta. Um valor acima de 1.0 é considerado 1.0, então set_volume(5) toca no volume máximo, não cinco vezes mais alto.
Uma tela de configurações geralmente exibe o volume de 0 a 10, o que fica melhor na tela. Divida por 10 para obter o valor do som:
volume = 5
click_sound.set_volume(volume / 10)O som mantém seu volume até que você o defina novamente. Quando o jogador altera volume, chame set_volume() novamente, ou o som tocará no nível antigo. get_volume() informa o nível atual de um som.
Desafio
FácilAs teclas para cima e para baixo alteram volume de 0 a 10, e a barra de espaço reproduz o clique para que você possa ouvi-lo. Faça o clique seguir a configuração:
- Depois de
volume = 5, chameclick_sound.set_volume(volume / 10). - Chame-o novamente cada vez que as teclas para cima ou para baixo alterarem
volume.
Experimente você mesmo
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()
Todas as lições de Som e sensação de jogo
4Vibração da Tela e Flash de Impacto
Vibração da TelaFlash de ImpactoPausa no ImpactoMantenha a DiscriçãoPratique por conta própria: Playground de Pygame