本教程涵盖:实体的对话设置、需求、动作。流程对话。 对话类型 最常见的对话类型是与其他实体的对话。这包括玩家走向角色并发起对话,或者实体接近玩家并开始对话。

第二种对话类型我们称之为【流程对话】。玩家主要在进入或离开关联了对话的区域范围时会遇到这类对话。它们被用作文字教程,也是游戏导演/地下城主向玩家传递重要信息的一种方式。

对话的关键要素 对话的第一个主要要素是起始选择。起始选择本质上是决定对话如何开始的事件或思维条件。从上到下首个判定为真的选择将成为对话遵循的路径。在以下示例中,该实体的对话将根据“避难所”任务是否完成而以不同方式开始。

1. 新增选择项功能。 2. 移除选择项功能:需先点击按钮,再选择要移除的选择项。 3. 调整选择项顺序功能:需先点击按钮,再选择要移动的选择项。 4. 选择项/事件/要求。 5. 选择项的输出将进入对话节点。 在起始选择项之后,对话通过对话节点和选项运行。对话节点是实体或程序向玩家展示的对话内容。选项是玩家可给出的潜在回应。对话节点和选项均可附加游戏逻辑。

1. 对话节点的输入。 2. 向玩家展示的对话内容。 3. 此对话节点激活时运行的游戏逻辑。 4. 玩家可选择的多个选项的输出。 5. 选项的输入。 6. 此选项生效或对玩家可用的条件。若条件未满足,该选项默认不可见。常见示例为检查玩家是否具备特定角色特质,之后才让该对话选项可用。 7. 玩家可见的文本/回应内容。 8. 对话中选择此选项时运行的游戏逻辑。 9. 选项输出至对话节点的内容。若不存在输出路径,选择此选项后对话将结束。 10.若玩家未满足要求,此选项将显示为灰色版本。该选项不可选择,但会保持可见。 您可以通过点击下图中标注为#1的图标来复制对话节点或选项。这将复制包括操作或要求在内的所有内容。 您可以通过点击下图中标注为#2(位于对话窗口底部)的图标来粘贴对话节点或选项。这将创建一个包含已复制内容的新对话节点或选项,不会将内容复制到已存在的对话节点或选项中。

与实体的对话设置在实体的【编辑对象】窗口内。

流程对话在区域触发器或任务的流程部分中设置。你需要先打开流程窗口,不同类型的流程窗口略有不同。 选择区域触发器后,即可在此处访问其流程。

这是在选择任务后,你访问任务流程的地方。

当你进入程序窗口后,在窗口底部附近寻找【编辑对话】按钮。

区域框架 对话可以像大脑一样使用区域框架。有关区域框架的更多详细信息,请先学习“实体大脑基础”教程。对于对话而言,区域框架有助于保存通用信息块并在不同NPC上重复使用。例如,你可以保存对世界构建方面的通用观点,并为每个派系设置不同的回答,然后将这些区域框架用于那些与他们无关任务的普通市民。

如何与实体开启对话 我们要介绍的第一种场景是玩家主动与实体开启对话。玩家若想拥有主动开启对话的选项,必须在智能模块中使用【允许对话请求】功能。默认情况下,对话请求是不被允许的。

仅请求对话本身不会产生任何效果。实体需要在其所处的状态中附加“已请求对话”事件。这将告知人工智能,当玩家尝试开始对话时应运行何种逻辑。

以下是实体大脑中,当玩家请求对话时所遵循的常见逻辑顺序。

1. 将AI目标设置为【对话者】(即玩家)。这一点至关重要,因为紧接着的动作是面向目标,而实体需要先知道应该面向谁。 2. 让实体知晓自己已面向目标并可进入下一状态的事件。 3. 开始对话本身。我们将全局变量【MidConversation】设为true,以此防止其他实体用它们自己的对话来打断当前对话。在第二个实体的逻辑中,我们让它们等待,直到【MidConversation】变为false,才会强制玩家进入它们的对话。 4. 此事件处于“true”状态时,用于进入下一状态。请记住,某个状态会不断重复,直到某个事件将逻辑输出导向大脑中的其他位置。因此,你不希望在每一帧都开始对话并设置变量。 5. 我们使用【站立】来让实体保持原位并等待下一个事件。 6. 此事件将允许我们在实体检测到敌人时结束对话。 7. 此事件是检测玩家何时结束对话的标准方式。

当实体检测到敌人时,我们会使用【强制关闭对话】动作来中断对话。对话结束时,我们总会将【MidConversation】设为 false。 第二种主要的实体对话场景是,当实体追逐玩家并在足够接近时发起对话。我们将向你展示一个名为【强制对话追逐玩家】(FSCP)的函数的部分内容。在本教程中,我们不会深入探讨函数的细节,只需知道它们是已设置好的逻辑,你可以反复使用,无需每次都从头创建。【FSCP】函数还会处理实体对犯罪行为的反应,但这里我们不对此进行解释。

1. 设置目标,使实体知道要追逐谁。 2. 设置前往目标的路径,让实体知道如何到达那里。 3. 向目标移动。如果追逐时间过长,计时器会用于在到达目的地前重新计算路径,使追逐看起来更自然。目的地是路径设置时AI目标的位置,该位置不会自动更新,因此需要通过计时器重新设置路径。 4. 沿路径移动,但不会每帧重置计时器。 5. 足够接近目标以触发对话。此事件将进入我们接下来要介绍的下一环节。 6. 实体已到达目标目的地,但距离不足以开始对话,因此重新开始移动循环。 7.计时器在到达目的地前结束,这会重启移动循环以实现更好的追击。如果不这样做,该实体将始终完全按照你创建的路径进行追逐,除非你静止不动等着它们,否则永远不会被追上。 以下是与前一张图片中编号5相关的逻辑。

1. 当【对话中】状态为真时,实体需要等待对话结束。 2. 当【对话中】状态为假时,无需等待,后续逻辑与之前开始对话的场景相同。 3. 让实体进入等待状态。此时禁用对话请求和扒窃功能,以避免游戏陷入AI行为可能出现异常的复杂场景。 4. 一旦【对话中】状态变为假,实体便知道可以开始与玩家对话。 如何通过区域触发器开始对话 区域触发器对话比实体对话简单得多,因为它们无需考虑任何AI反应。它们与玩家进入或离开该区域时可激活的程序相关联。


你需要使用的主要元素是【启动流程对话】动作。在上述示例中,我们使用【QuickslotTutorial】变量来确保该对话只发生一次。我们将其设为false以启动对话,并在对话开始时将其设为true,这样触发条件就不会再次生效。如果不这样做且没有设置触发条件,玩家每次进入该区域时对话都会触发。 实体情绪与动画 实体有5种不同的情绪(愤怒、开心、中立、悲伤、恐惧),通常应在对话中设置或更改它们。每种情绪都有对应的面部表情和不同的动画。你可以通过【更改情绪】动作来设置实体的情绪。通常,你会在对话的首个对话节点以及具有重要上下文的对话选项中使用此功能。 【播放情绪动画集】操作会从与当前情绪相关联的动画组中随机选择一个动画。你应当在每个对话节点都使用此操作,以便角色在对话过程中能给予玩家反馈。 确保在每个对话的最后一个对话选项中使用【停止情绪动画集】操作。如果不这样做,当对话结束时,角色可能会出现动画异常的情况,但实际上他们仍在播放上半身的情绪待机动画。





换一换 





















