第 7 课

目录

配置 RTPC 的值以控制 Switch

在上一课中,我们使用了 Event 来设置 State,进而播放 Boss、Story、Victory 和 Defeated 段落中的各种音乐。在本课晚些时候,你要添加类似的若干 Event 来指明敌人是否发现了玩家,这个状态将进一步用来决定该播放 Combat 还是 Explore 音乐。尽管可以使用这些 Event 来设置 Explore 或者 Combat Switch,但是你最好不要用这种方式直接关联它们。更恰当的做法是,要使用 RTPC 来驱动 Gameplay_Switch Switch Group。不直接将敌人发现玩家的 Event 与 Switch Group 连接起来的原因是,"敌人是否发现玩家"这个状态变化得非常快,如果直接关联起来,则将导致音乐很突然地跳转。比如,玩家在四处探索时遇到一只怪兽并打败了它,整个过程只有两秒钟时间。要是音乐也在两秒钟内由 Explore 过渡到 Combat 再切回到 Explore,听起来就会很奇怪。

为了解决这个问题,我们可以利用 Slew Rate 这个功能,而只有 Game Parameter 提供该功能。Slew Rate 提供一种方法,可以使得两个值之间的转换在一段时间内缓慢地完成。试想一下有一辆车,我们希望车速由 0 加快到 100 公里/小时,然后再减慢到 0。一辆跑车的转换速率很快,那么从 0 加速到 100 再变回 0 的过程可以很快完成;但是对于一辆校车来说,完成上述速度的转变所需要的时间要长得多,这意味着校车的转换速率比较低。

你将配置一个 EnemyAware Game Parameter,该参数的范围是 -1 到 101。数值为 -1 ~ 50 表示敌人没有发现玩家,为 51 ~ 101 表示敌人发现了玩家。通过调节转换速率的取值,就能控制敌人认知的转变速度。这个信息会用来设定 Gameplay_Switch Switch Group,这个 Switch Group 是你已经设好来播放 Combat 或 Explore 音乐用的。

因为 "EnemyAware" Game Parameter 只有 Music 系统才有,所以我们要将其放在 "Music" Work Unit 中。

  1. 在 Project Explorer(工程资源管理器)中,单击 Game Syncs(游戏同步器)选项卡,然后选中 Game Parameters(游戏参数)文件夹。接着创建新的 Work Unit(工作单元),然后将其命名为 Music

  2. 选择 Music Work Unit 并点击 Create New Game Parameter 图标,将其命名为 EnemyAware

  3. 选中 EnemyAware Game Parameter(游戏参数),然后在 Range(范围)下将 Min(最小值)改为 -1

    一个警告会出现并询问:也许有对象已经受到此 Game Parameter 的控制,此次更改后,对于那些对象应该如何处理放缩比例的变化。目前没有其他对象引用该 Game Parameter,所以选择哪个选项都可以。

  4. 单击 Stretch(拉伸),然后在 Range(范围)下将 Max(最大值)改为 101。Range 属性中新赋的值就生效了。

    你最好让 Default(默认)值为 0,这样的话,除非有其它的情况,Wwise 就会默认玩家处于探索模式中。

  5. Default 值设为 0

    既然已经定义了取值范围,你就需要进一步使用 Slew Rate 功能来指明数值之间的转换要平滑。Slew Rate 可以在 Interpolation 组框的选项中找到。

  6. Interpolation Mode 设为 Slew Rate

    为了让它生效,你需要调整 Attack(上升)和 Release(下降)时间。Attack 率控制值上升时变化,而 Release 率则作用于值下降时。用汽车来打个比方,若车速由 0 加快到 100 公里/小时的时间比由 100 公里/小时减慢到 0 的时间长,那么就表示其 Attack 比 Release 要慢。

    回到《Cube》中敌人发现玩家这个例子上,我们的基本想法是希望玩家能很迅速地知道自己已经被敌人发现了(触发 Combat 音乐)。而当玩家将最后一只怪兽击败时,应当稍微慢一点切回到“敌人没有发现玩家”状态(触发 Explore 音乐),以此来营造片刻的不安感,让其觉得周围可能还藏着其他怪物。

  7. Attack 的值设为 1000,同时 Release 的值设为 10

    现在你需要将 EnemyAware RTPC 映射到 Gameplay_Switch Switch Group 上。映射的方式和第 5 课中你将 Playerhealth Game Parameter 应用到 Switch 上的方式是一样的,那时你曾经将 Switch 和 Guitar Switch Track 搭配在一起使用。

  8. 选择 Gameplay Switch Group 并点击 Use Game Parameter 复选框。在 Game Parameter(游戏参数)分组框中,单击选择器按钮 [>>],然后选择 EnemyAware Game Parameter。

    坐标图中出现了一条曲线,你可以看到 Y 轴表示 Explore 和 Combat 这两个 Switch,X 轴表示 EnemyAware Game Parameter 的数值取值。

    你希望 Explore 和 Combat 之间的转换发生在中点处。换句话说,数值在 -1 ~ 50 之间为 Explore,数值在 51 ~ 101 之间为 Combat。

  9. 将第一个控制点拖动到 Explore 那条线上。

    [备注]

    当你拖动时,在光标到达顶点之前,指针并不会移动。

  10. 在 50 下方的位置双击,然后将控制点向下拖动到 Combat 这条线。

    [备注]

    只要值在 50 附近就可以了,不需要那么精确。

    现在你已经完成了将 EnemyAware Game Parameter 映射到 Gameplay_Switch Switch Group 的工作,接下来可以进行测试了。目前,你可以调节坐标图顶点处的 EnemyAware 光标来测试效果。 这种测试方法可以让你听测取值的变化是否会触发正确的音乐,不过就目前而言,你没法听到 Slew Rate 是如何做到延迟过渡的。你会在本课晚些时候测试那个功能的。

  11. 确保 PlayerLife State Group 被设定为 Alive 并且 Music_State State Group 设为 Gameplay,然后播放 Music Event 并左右调节 RTPC 光标值。

    你可以听到 EnemyAware 值大于 50 时会播放 Combat 音乐,而小于 50 时会播放 Explore 音乐。


此页面对您是否有帮助?