第 7 课

目录

平滑 Transition 决策

在《Cube》中,玩法的主要模式是 Wwise Wwizard(魔法师)使用魔法宝石在地图上寻觅并打败怪兽。我们已在 "Music_State" State Group(状态组)中将此模式定义为 "Gameplay" State。到目前为止,你已经把 Combat 音乐与 Gameplay State 关联起来了,但是如果玩家只是在一堆空房间里四处走动的话,对于这种和缓的时刻来说,Combat 音乐就显得过于紧张激烈了。而你在第 1 课中接触过的 Explore 音乐就是为这类情景准备的。在游戏当中选择播放哪种音乐取决于非玩家角色是否意识到了 Wwise Wwizard 的存在。这个状态在游戏中会不断变化,比方说,玩家进入到有怪物出现的房间了,而后玩家可能将怪物解决掉,或者干脆逃出房间跑掉。游戏引擎通过两个简单的 Wwise Event(事件)来传达敌人是否察觉到玩家的存在:Monsters_Aware 和 Monsters_Unaware。

就音乐过渡而言,我们面临的挑战是,"怪物/敌人有没有发现玩家"这个状态的变化可能会非常突然。某一时刻,周围没有敌人。这时应播放 Explore 音乐;下一时刻,Wwizard 穿过传送门,到处都是怪兽。这时应播放 Combat 音乐…经过一番激战,玩家把怪兽打败了。这时应切回到 Explore 音乐。"敌人有没有发现玩家"这个状态可能会在几秒内来回切换好多次,因此每次在 Combat 和 Explore 音乐之间即刻切换的话会显得非常突兀。对于这两类音乐之间的过渡,如果想对过渡发生的时间和方式有更进一步的控制,那么只使用 Music Switch Container Association Editor(音乐切换容器关联编辑器)中的功能是无法实现的,因为这时我们需要的控制要复杂得多。 解决这个问题的方法,其每一步都涉及到许多概念。在深入研究之前,我们最好先对该方法有一个大致的了解。

首先,你要在 Music Playlist Container(音乐播放列表容器)中定义一系列的 Transition(过渡)规则。这些规则能实现 Explore 和 Combat 音乐在彼此之间自然地过渡,让玩家感觉听到的并非两类音乐在相互切换,而是一曲和谐的音乐在根据游戏中的动作来变换强度。这一规则系统就位之后,下一个挑战即是把握好过渡发生的时机。 解决这个问题的关键在于 Game Parameter(游戏参数)包含的一个功能:Slew Rate(转换速率)。我们知道 Music Switch Container Association Editor 可以选择该播放哪段音乐,但是由于 Game Parameter 不能直接驱动 Music Switch Container Association Editor,那么就必须得把 Game Parameter 转换成一个 Switch Group(切换开关组),而 Switch Group 可以用来挑选恰当的音乐。然而不要忘了,关于"敌人有没有发现玩家"的信息是以两个简单的 Event 的形式传达的:Monsters_Aware 和 Monsters_Unaware。这些 Event 将被转换成一个 RTPC,再用 RTPC 设置 Switch Group 中的 Switch,这样就能让 Music Playlist Container 选择合适的音乐了。步骤这么多可能听上去有点让人困惑,但现在只需要记住,你接下来要创建的结构会生成这样一条信息流就行了:Event > Game Parameter > Switch Group > Music Switch Container。如果明白了这一点,那么现在你就需要逆向行动,因为创建这个结构比较容易的做法是,从最末端开始搭建,然后一路回到最开头。


此页面对您是否有帮助?