> For the complete documentation index, see [llms.txt](https://docs.convai.com/api-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.convai.com/api-docs/zh/cha-jian-yu-ji-cheng/convai-unreal-engine-plugin/features/emotion/emotion-examples.md).

# 情绪示例

六个场景涵盖强制表情、过场锁定、基于分数的 VFX、偏移调节、中性重置和 Animation Blueprint 混合姿势。

这些场景展示了在……上使用情绪系统的常见方式 `UConvaiChatbotComponent`。每个示例都是独立的，并假设角色已经具备一个可用的 `Convai 聊天机器人` 组件。所有函数和属性的蓝图参考位于 [情绪蓝图参考](/api-docs/zh/cha-jian-yu-ji-cheng/convai-unreal-engine-plugin/features/emotion/emotion-blueprint-reference.md).

***

### 场景 1：强制指定情绪

**情境：** 一段脚本化的安全说明要求虚拟讲师在特定时刻表现出担忧，无论 Convai 发送什么。

#### 蓝图步骤

1. 获取对……的引用 `Convai 聊天机器人` 角色上的组件。
2. 调用 `强制设置情绪`。将 **基础情绪** 为 `悲伤`, **强度** 为 `更强烈`，以及 **重置其他情绪** 为 `true`。应用的分数将是 `1.0` （即 `更强烈` 乘数）。
3. `当情绪状态更改时` 在调用完成后立即触发。如果你的处理器将分数映射到变形目标，请调用 `获取情绪分数` 用于 `悲伤` 并使用……将返回值应用到 `设置变形目标`.

**验证：** `获取情绪分数` 用于 `悲伤` 返回 `1.0` ，角色的脸部会在映射的变形目标上显示悲伤表情。

{% hint style="info" %}
当 `当情绪状态更改时` 由……触发 `强制设置情绪`， **交互玩家组件** 输出引脚是 `null`。在处理器中使用它之前，请先对该引脚进行空值检查。
{% endhint %}

***

### 场景 2：在过场动画期间锁定情绪状态

**情境：** 过场动画必须让角色保持愤怒表情，而 Convai 继续发送应被抑制的基于对话的更新。

#### 蓝图步骤

1. 在过场动画开始前，调用 `强制设置情绪` 使用 **基础情绪** = `愤怒`, **强度** = `基础`, **重置其他情绪** = `true` 以建立所需的表情。
2. 设置 `锁定情绪状态` 为 `true` 在 `Convai 聊天机器人` 组件。过场动画期间到达的所有服务器情绪更新都会被静默丢弃，并且 `当情绪状态更改时` 在锁定时不会对服务器驱动的更新触发。
3. 如果表情尚未由你的事件处理器驱动，则调用 `获取情绪分数` 用于 `愤怒` 并将返回值应用到相应的变形目标。
4. 当过场动画结束时，设置 `锁定情绪状态` 改回 `false`。下一次服务器情绪更新将替换锁定状态，并再次触发该事件。

你也可以设置 `锁定情绪状态` 为 `true` 而无需先进行 `强制设置情绪` 来将角色冻结在过场动画开始时所保持的表情。重置 `锁定情绪状态` 为 `false` 在过场动画结束时。

**验证：** 在过场动画期间，即使角色说话，愤怒表情也会保持。解锁后，新的台词会产生更新的表情，并且 `当情绪状态更改时` 会再次触发。

***

### 场景 3：读取情绪分数以驱动 VFX 效果

**情境：** 角色周围的粒子系统应随着角色的恐惧分数上升而增强——例如，在医疗培训模拟中用来表示痛苦的视觉光环。

#### 蓝图步骤

1. 订阅 `当情绪状态更改时` 在你的角色蓝图中。
2. 在事件处理器中，调用 `获取情绪分数` 使用 **情绪** 设置为 `害怕`。返回值是一个 `float` 在 `0.0`–`1.0`.
3. 将返回值输入到 **速率缩放** 或 **强度** 粒子组件的参数中，使用 `设置浮点参数`.

同样的模式适用于任何 `EBasicEmotions` 值——可用该分数驱动 UI 计量条、材质参数、音高或任何其他数据驱动系统。

**验证：** 当角色说出带有恐惧内容的话语时，粒子效果会按比例增强，增强程度取决于 `害怕` 分数。

***

### 场景 4：通过偏移调节放大所有情绪

**情境：** 测试表明，在目标光照和预期摄像机距离下，角色的情绪过于微妙，难以清晰辨认。

#### 蓝图步骤

1. 选中 `Convai 聊天机器人` 组件，在 **Details** 面板。找到 **情绪偏移** 在……下的 **Convai** 类别。
2. 将其设置为 `0.4` 以将后续所有服务器驱动的分数计算提高 `0.4` ，然后在夹紧到 `0.0`–`1.0`.
3. 要在运行时从蓝图中设置它，请获取对聊天机器人组件的引用，从其上拖出，并使用一个 **设置** 节点于 `情绪偏移` 属性公开。

更低 `情绪偏移` 如下所示 `0.0` 以生成一个更内敛的角色，使所有表情都被弱化。

**验证：** 与角色交谈后，在预期摄像机距离下，面部表情会更清晰地呈现，并且 `获取情绪分数` 返回值会比偏移更改前更高。

{% hint style="info" %}
`情绪偏移` 仅适用于服务器驱动的更新——它对通过……设置的分数没有影响 `强制设置情绪`。要放大强制表达的表情，请改用 `更强烈` 作为强度级别。
{% endhint %}

***

### 场景 5：恢复为中性表情

**情境：** 在一个强制或锁定了特定情绪的场景之后，角色必须在下一次交互开始前回到完全中性的静止姿势。

#### 蓝图步骤

1. 调用 `重置情绪状态` 在 `Convai 聊天机器人` 组件。这会将所有情绪分数清零。 `当情绪状态更改时` 会立即触发。
2. 在你的事件处理器中（或在重置后直接内联），调用 `获取情绪分数` 针对你驱动的每个情绪类别——所有分数都将 `0.0`.
3. 使用……将零权重应用到网格 `设置变形目标` ，对每个映射的变形目标进行处理。角色的脸部会回到静止姿势。

**验证：** 所有情绪分数都读作 `0.0` ，并且角色的脸部会在下一次交互前返回到其默认静止姿势。

***

### 场景 6：在动画蓝图中驱动混合姿势

**情境：** 角色的表情应使用 Unreal 的姿势混合系统在不同姿势之间混合，而不是直接写入变形目标——例如，将情绪姿势与现有的移动或程序动画相结合。

#### 蓝图步骤

1. 在你角色的 **动画蓝图**中，添加一个名为 `SurpriseWeight` （或任何与你想要的情绪相匹配的名称）。
2. 在 **事件 蓝图更新动画**，获取对所属 Actor 的引用，将其转换为你的角色类，并获取 `Convai 聊天机器人` 组件。
3. 调用 `获取情绪分数` 使用 **情绪** 设置为 `惊讶`。将返回值连接到一个 **设置** 节点，用于 `SurpriseWeight`。这会在每个动画 Tick 中运行。
4. 在 **AnimGraph**中，添加一个 **按浮点混合姿势** 节点。将你的基础姿势连接到输入 **一个**，将你的惊讶姿势（或 Pose 资源）连接到输入 **B**，并将 `SurpriseWeight` 连接到 **Alpha** 引脚。
5. 编译并在编辑器中运行测试。随着 `惊讶` 分数上升，角色会向惊讶姿势混合。

这种方法将表情混合保留在动画蓝图内，并避免需要调用 `设置变形目标` 节点——每个情绪类别一个——从动画蓝图状态完全驱动整套表情骨骼。 **按浮点混合姿势** 事件处理器。你可以叠加多个

**验证：** 在编辑器中运行时，随着 `惊讶` 分数在对话中上升，角色会平滑地向惊讶姿势混合。

***

### 相关页面

{% content-ref url="/pages/9ac48061a03a0400ae6e1769df358c2fb2a82536" %}
[情绪 Blueprint 参考](/api-docs/zh/cha-jian-yu-ji-cheng/convai-unreal-engine-plugin/features/emotion/emotion-blueprint-reference.md)
{% endcontent-ref %}

{% content-ref url="/pages/c3081281b873e1a1b00439a147d3db6877743003" %}
[情绪系统的工作原理](/api-docs/zh/cha-jian-yu-ji-cheng/convai-unreal-engine-plugin/features/emotion/how-the-emotion-system-works.md)
{% endcontent-ref %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.convai.com/api-docs/zh/cha-jian-yu-ji-cheng/convai-unreal-engine-plugin/features/emotion/emotion-examples.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
