Combo连续技发动!点几下鼠标实现组合音效!

这篇文章介绍了如何在无需编写代码的情况下,在ADX2中用组合顺序Cue类型实现组合音效。(在开始阅读之前,如果你还不熟悉ADX2中的Cue机制,建议先观看这些教学视频了解一下。)

 

什么是顺序Cue?

顺序Cue(Sequential Cue)用于当我们希望在每次触发Cue时按预先定义好的顺序播放不同的声音的情况,例如倒计时就是一个很好的例子。当第一次触发时,序列Cue会播放第一条轨道(即AtomCraft的Cue时间线中最上面的一条轨道),然后每次触发都会播放下一条轨道。当最后一条轨道播放完毕后,下一次触发将重新播放第一条轨道(注意,轨道的播放顺序也可以通过播放列表来定义)。

下面是一个简单的例子,我们用了一个包含两种脚步声的顺序Cue,通过交替播放两种声音,我们可以比较粗糙地模拟左右脚交替行走的效果。

什么是组合顺序Cue?

组合顺序Cue(Combo Sequential Cue)是建立在顺序Cue之上的,只不过多了一个播放时机的参数。具体来说,在组合顺序Cue中,只有在指定时间窗口范围内发出下一个播放请求,才会顺序地播放其中的轨道。

这种Cue的工作方式是这样的:当第一次触发Cue时,会播放最上面一条轨道。然后,每次触发时都会播放下一条轨道,但前提是必须在指定时间范围内重新触发Cue。当到达最后一条轨道时,可以返回到指定的一条轨道。在任何位置上,只要Cue未能在指定时间范围内被重新触发,就会返回第一条轨道。

组合顺序Cue的来源

顾名思义,这种类型的Cue对于实现组合音效非常有用,这种组合音效在很多格斗游戏和平台动作游戏中非常常见。同样也适用于射击游戏中解决高频触发的枪声音效设计。

AtomCraft主架构师Tatsuya Suizu表示:“我们首次实现组合顺序Cue是在2010年。这一功能首先被加入到CriAudio,这是我们的上一款游戏音频中间件产品,也是ADX2之父。这一功能需求是由世嘉的一位声音设计师提出的。他的团队主要负责开发索尼克系列游戏,我记得他们当时在开发《刺猬索尼克4》,其中需要当玩家在关卡中连续击破一种物体时播放一串音阶,但超过预设时间后需要重置音阶。”

配置组合顺序Cue

除了Cue的常用设置之外,组合顺序Cue还有两种特殊的参数——“组合间隔”(Combo Interval)和“组合返回”(Combo Loop Back)。这两个参数都可以在属性面板中找到。

组合间隔:我们在这里可以设置在多长时间(单位:毫秒)内重新触发Cue以播放下一条轨道。当超过这一时间后,Cue就会自动返回第一条轨道。

 

组合返回:我们在这里可以设置到Cue到达最后一条轨道后,再次在规定时间范围内触发时,需要返回到哪一条轨道。这是一个从0开始的索引值,所以如果输入0,就表示当Cue再次触发时,将播放第一条轨道。

 

在AtomCraft中创建一个组合顺序Cue

如果你想知道如何在AtomCraft中实现一个组合顺序Cue,我们为你准备了一个小工程,可以从这里下载:(本工程需要AtomCraft 2.24或以上版本)

Combo_Sequential

在这个工程中,我们模拟了一个具有4种状态组合的格斗角色:

下图就是工程在AtomCraft中打开后的样子。你可以看到屏幕中间有一个包含4条轨道的组合顺序Cue。这里使用的4个波形文件可以从左下角的素材面板中找到。

工程中有几个实现上的细节需要注意。我们在Bus1上加了一个混响,还为每条轨道的音量和音高加入了少许随机化,使得声音听起来不至于特别重复。我们用双二阶滤波器(Biquad filter)对第一条轨道做了一点衰减,还在最后一条轨道上加上了音量包络,原始的声音听起来会更长。

这个组合音效的设计,在游戏中是这样展现的:

当玩家出拳时,会触发“Anime_Combo”这个Cue,然后会播放第一条轨道“Anime_Punch01”。然后,如果在700ms内再次出招,则游戏会重新触发“Anime_Combo”这个Cue,这时会播放第二条轨道“Anime_Punch02”。以此类推,如果在700ms内再次出招,则会播放“Anime_Punch03”。最后,当按规定时间出第4招时,Cue会播放最后一条轨道“Anime_Punch04”,然后Cue会返回到第一条轨道。

在其中任何阶段,如果在规定的组合间隔内玩家没有出招,则Cue会返回第一条轨道。下面这张图展示了上述两种情况。

下面我们看一看在AtomCraft中这个组合音效听起来是什么样子。在下面这段视频中,我们先触发这个Cue,然后等待一会儿,这时组合模式不会激活,下次触发Cue就直接返回到第一条轨道。接下来我们连续触发3次Cue,每次都在组合间隔范围内,这时我们就可以听到这个组合音效完整播放了一遍。注意,轨道左侧的绿灯表示当前播放的是哪条轨道。

当然,你也可以继续改进这个示例工程,让这个音效实现得更细腻一些。比如说,我们可以在“Anime_Combo”这个Cue里面嵌套另一个Cue,每条轨道可以触发一个随机Cue(Random Cue),以带来更多的变化,或者可以触发一个切换Cue(Switch Cue),使得可以根据招式类型或者击打部位来播放不同的音效。

游戏中的配置

如果你的游戏音频中间件没有提供类似组合顺序Cue的功能,要实现这样一个组合音效,你需要处理不同的音频事件句柄(在这个例子中就是4个句柄),上一个玩家动作所经过的时间,以及当前的组合播放状态。基于上面这些信息,你才能够触发正确的声音事件。

但在ADX2中,由于这些逻辑已经由音频引擎实现了,因此我们就无需声明和更新变量,也无需判断这些时间,只要像平常一样播放一个简单的Cue就可以了,不需要音频程序员进行任何额外的工作。

如果你配合Unity(或Unreal)等游戏引擎来使用ADX2,操作也是一样简单,无需额外编写脚本(或C++代码),只要在组件中选择正确的组合Cue,ADX2就会在你每次触发Cue时自动处理这些组合逻辑。

以上就是关于组合顺序Cue的介绍,如果你想了解ADX2的某个功能,快点告诉我们吧!

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据