Menu
CoddyTech

音量

CoddyのPygameジャーニー「サウンドとゲームの手応え」セクションの一部。レッスン 3/23。

各 Sound にはそれぞれ音量があり、0.0(無音)から 1.0(ファイルと同じ最大音量)まで設定できます。新しい Sound の音量は 1.0 です。set_volume() で変更します。

step_sound.set_volume(0.3)

これを使ってゲーム内の音量バランスを調整します。常に再生される足音は小さく、めったに起きない爆発音は大きくできます。1.0 を超える値は 1.0 として扱われるため、set_volume(5) は最大音量で再生され、5 倍の音量にはなりません。

設定画面では、音量を 0 から 10 で表示することがよくあります。画面上で見やすいためです。Sound の値にするには、10 で割ります。

volume = 5
click_sound.set_volume(volume / 10)

Sound の音量は、再度設定するまでそのままです。プレイヤーが volume を変更したときは、もう一度 set_volume() を呼び出してください。そうしないと、Sound は以前の音量で再生されます。get_volume() を使うと、Sound の現在の音量がわかります。

challenge icon

チャレンジ

簡単

上キーと下キーでvolumeを0から10まで変更し、スペースキーでクリック音を再生して聞けるようにします。クリック音を設定に合わせましょう。

  1. volume = 5の後に、click_sound.set_volume(volume / 10)を呼び出します。
  2. 上キーまたは下キーで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()

サウンドとゲームの手応えのすべてのレッスン

自分で練習してみよう: Pygameプレイグラウンド