这是关于使用 Python 3 和 Pygame 模块创建视频游戏的系列文章的第 13 部分。之前的文章包括:
- 学习如何通过构建简单的骰子游戏来使用 Python 编程
- 使用 Pygame 模块通过 Python 构建游戏框架
- 如何为你的 Python 游戏添加玩家
- 使用 Pygame 移动你的游戏角色
- 没有反派的英雄算什么?如何为你的 Python 游戏添加反派
- 为你的游戏添加平台
- 在你的 Python 游戏中模拟重力
- 为你的 Python 平台游戏添加跳跃功能
- 让你的 Python 游戏玩家能够向前和向后跑
- 使用 Python 在 Pygame 中设置战利品
- 为你的 Python 游戏添加计分功能
- 为你的 Python 游戏添加投掷机制
Pygame 提供了一种将声音集成到你的 Python 视频游戏中的简便方法。Pygame 的 mixer 模块 可以按命令播放一个或多个声音,通过混合这些声音,你可以同时播放背景音乐,并听到英雄收集战利品或跳过敌人时的声音。
将 mixer 模块集成到现有游戏中很容易,因此,本文不是向你展示确切的放置代码示例的位置,而是解释在你的应用程序中获得声音所需的四个步骤。
启动 mixer
首先,在你的代码的设置部分,启动 mixer 进程。你的代码已经启动了 Pygame 和 Pygame 字体,因此将它与这些代码放在一起是一个好主意
pygame.init()
pygame.font.init()
pygame.mixer.init() # add this line
定义声音
接下来,你必须定义要使用的声音。这要求你的计算机上必须有声音,就像使用字体需要字体,使用图形需要图形一样。
你还必须将这些声音与你的游戏捆绑在一起,以便任何玩你游戏的人都有声音文件。
要将声音与你的游戏捆绑在一起,首先在你的游戏文件夹中创建一个新目录,与你为图像和字体创建的目录放在一起。将其命名为 sound
s = 'sound'
即使互联网上有大量声音,但下载它们并将其与你的游戏一起赠送不一定是合法的。这似乎很奇怪,因为来自著名视频游戏的许多声音都是流行文化的一部分,但法律就是这样运作的。如果你想将声音与你的游戏一起发布,你必须找到一个开源或 知识共享 声音,该声音允许你将声音与你的游戏一起赠送。
有几个专门提供免费和合法声音的网站,包括
- Freesound 托管各种声音效果。
- Incompetech 托管背景音乐。
- Open Game Art 托管一些声音效果和音乐。
有些声音文件仅在你注明作曲家或声音设计师的姓名时才可免费使用。在将任何声音文件与你的游戏捆绑之前,请仔细阅读使用条件!音乐家和声音设计师在声音上的努力程度与你在代码上的努力程度相同,因此即使他们不要求,也最好注明他们的姓名。
要注明你的声音来源,请在一个名为 CREDIT
的文本文件中列出你使用的声音,并将该文本文件放在你的游戏文件夹中。
你也可以尝试制作自己的音乐。出色的 LMMS 音频工作站易于使用,并附带许多有趣的声音。它在所有主要平台上都可用,并导出为 Ogg Vorbis (OGG) 音频格式。
将声音添加到 Pygame
当你找到你喜欢的声音时,请下载它。如果它以 ZIP 或 TAR 文件形式出现,请解压缩它并将声音移动到你的游戏目录中的 sound
文件夹中。
如果声音文件具有包含空格或特殊字符的复杂名称,请重命名它。文件名是完全任意的,文件名越简单,你越容易在代码中键入它。
大多数视频游戏使用 OGG 声音文件,因为该格式以小文件大小提供高质量。当你下载声音文件时,它可能是 MP3、WAVE、FLAC 或其他音频格式。为了保持高兼容性和低下载大小,请使用 fre:ac 或 Miro 等工具将这些文件转换为 Ogg Vorbis。
例如,假设你下载了一个名为 ouch.ogg
的声音文件。
在你的代码的设置部分,创建一个变量来表示你要使用的声音文件
ouch = pygame.mixer.Sound(os.path.join(s, 'ouch.ogg'))
触发声音
要使用声音,你只需在你想要触发它时调用该变量即可。例如,要在你的玩家击中敌人时触发 OUCH
音效
for enemy in enemy_hit_list:
pygame.mixer.Sound.play(ouch)
score -= 1
你可以为各种动作创建声音,例如跳跃、收集战利品、投掷、碰撞以及你可以想象的任何其他动作。
添加背景音乐
如果你有想要在游戏背景中播放的音乐或氛围音效,你可以使用 Pygame 的 mixer 模块的 music
函数。在你的设置部分,加载音乐文件
music = pygame.mixer.music.load(os.path.join(s, 'music.ogg'))
并启动音乐
pygame.mixer.music.play(-1)
-1
值告诉 Pygame 无限循环播放音乐文件。你可以将其设置为从 0
及以上的任何值,以定义音乐在停止之前应循环播放的次数。
享受音景
音乐和声音可以为你的游戏增添很多风味。尝试将一些添加到你的 Pygame 项目中!
评论已关闭。