没有音乐和音效的游戏是没有灵魂的,这回讲解如何处理背景音乐及跳跃音效。加载music及sound的方法,之前已经写过,见:pygame 笔记-8 背景音乐&子弹音效 。

先介绍一个很棒的生成各种音效的网站:https://www.bfxr.net/,该网站提供了一个音效生成器,界面如下:

pygame-KidsCanCode系列jumpy-part14-背景音乐及音效

利用该工具,可以生成各种跳跃、爆炸之类的音效wav文件。

然后就是背景音乐了,pygame支持wav, mp3, ogg等这种格式,但是考虑到背景音乐通常比较大,不建议用wav做背景音乐,最好是mp3或ogg格式,mp3格式有专利,而且pygame对mp3的兼容性不太好,最佳推荐是ogg格式。

提供2个在线转换成ogg格式的网址:

https://cloudconvert.com/wav-to-ogg

https://cloudconvert.com/mp3-to-ogg

另外,再送一波福利,可以在opengameart.org上找到很多游戏的常用背景音乐:

https://opengameart.org/art-search-advanced?keys=&field_art_type_tid%5B%5D=12&sort_by=count&sort_order=DESC

 

有了这些素材后,就该写代码了:

pygame-KidsCanCode系列jumpy-part14-背景音乐及音效

将准备好的声音素材,放到指定的目录,参考上图。

然后在main.py的load_data中,加载跳跃的音效:

 1     def load_data(self):
 2         file_path = path.join(self.dir, HIGH_SCORE_FILE)
 3         if path.exists(file_path):
 4             with open(file_path, "r") as f:
 5                 try:
 6                     self.high_score = int(f.read())
 7                 except:
 8                     self.high_score = 0
 9         self.spritesheet = Spritesheet(path.join(self.dir, SPRITE_SHEET_PNG_FILE),
10                                        path.join(self.dir, SPRITE_SHEET_XML_FILE))
11 
12         # 设置声音目录
13         # 声音素材,可通过https://www.bfxr.net/获取
14         self.snd_dir = path.join(self.dir, "../snd")
15         self.jump_sound = pg.mixer.Sound(path.join(self.snd_dir, "Jump.wav"))
View Code

相关文章: