【正文】
一款游戏除了动作和动画之外,在视觉上最容易提升画面效果的当属粒子系统了。关于粒子系统的详细介绍我们在这里就不在阐述,因为那不是重点,有兴趣的可以自己百度了解粒子系统。
bbframework框架提供了“P.newParticle()”函数来播放粒子文件。cocos2D引擎支持的是“.plist”格式的粒子文件,plist文件可以通过专门的粒子编辑器来导出。newParticle()函数有三个参数,第一个是粒子plist文件的位置,我们同样是放在X4或者X2里面。第二个和第三个参数分别是粒子系统创建位置的x和y值。要移除一个粒子系统我们同样通过调用粒子系统对象的“remove()”函数。粒子系统其实也是一个节点对象,同样支持放大缩小、动作、和隐藏显示等操作。
local particleObj = P.newParticle("particle/black/snow.plist", 480, 500):to(self, 10)
根据以上代码,我们在坐标(480,500)的位置创建了一个下雪的粒子系统,刷新模拟器我们就可以看到效果了。
要了解粒子系统的详细使用,推荐参考“UParticle.lua”文件。
一款游戏除了画面,还需要动听的背景音乐和激动人心的音效。在bbframework框架中,对于声音的控制都是通过“sound”这个全局对象来实现的,“sound.lua”是个静态类,关于sound的操作我们可以参考“SoundBase.lua”和“sound.lua”两个文件。
bbframework提供了“sound.playMusic()”函数来播放游戏的背景音乐,游戏在同一时刻只能有一个背景音乐,我们想要切换背景音乐只要再次调用这个函数就可以了,且背景音乐是默认循环播放的。playMusic()函数接收一个字符串类型的参数,它是我们要播放的背景音乐的文件路径。但是playMusic()函数值得注意的是每次调用它都重新播放指定的音频文件,哪怕它和正在播放的背景音乐是同一个文件。为了解决遇到相同背景音乐,我们不重新播放的问题,bbframework提供了“sound.switchMusic()”函数,它同样接收一个音频文件路径作为参数。所不同的是当它接收到的文件路径和当前正在播放的背景音乐一样时,它遍不执行。有了背景音乐,我们可以通过“sound.stopMusic()”来停止。
-- 播放背景音乐(强制切换背景音乐) sound.playMusic() -- 播放背景音乐(遇到相同的不切换) sound.switchMusic() -- 停止背景音乐 sound.stopMusic() -- 暂停播放背景音乐 sound.pauseMusic() -- 恢复背景音乐 sound.resumeMusic() -- 启用背景音乐 sound.enableMusic() -- 禁用背景音乐 sound.disableMusic() -- 启用声音引擎 sound.enable() -- 禁用声音引擎 sound.disable()
除了背景音乐,游戏里面还有那些短促的音效,比如打斗的声音、按钮点击的声音。同样bbframework提供了“sound.playSound()”和“sound.playEffect()”两个函数来播放音效,这两个函数同样接收一个字符串作为参数,字符串的内容是音效文件的路径。除此之外,这两个函数还会返回音效的句柄,供我们操作音效。我们可以通过“sound.stopSound()”来停止指定的音效,stopSound()函数接收一个音效句柄作为参数,这个音效将会被停止。当我们要停止当前播放的所有音效时,我们无需手动遍历当前播放的所有音效句柄,然后逐个停止。bbframework提供了“sound.stopAllSounds()”函数来停止所有的音效。
除此之外,对于有些音频文件我们需要预加载再播放的。bbframework提供了“sound.preloadMusic()”和“sound.unloadMusic()”函数来预加载和卸载背景音乐,通过“sound.preloadSound()”和“sound.unloadSound()”来预加载和卸载音效。
对于音效的控制,我们比较常用的也就以上介绍的这些函数,关于函数的详细使用我们可以参考前文提过的“sound.lua”和“SoundBase.lua”这两个文件。
下一次我们介绍下游戏场景的跳转实现和场景切换的效果动画以及Loading界面的使用,在Loading中我们再附加关于资源的预加载和卸载是如何实现的。
【脚注】
宝宝巴士-快乐童年!