力反馈是游戏中常用的设备的振动,可将游戏中发生的力传达给玩家。此功能称为游戏手柄或控制器的"隆隆声"或控制器振动。例如,你可以使用力反馈模拟游戏中发生爆炸时的冲击波。这可为玩家的沉浸式体验带来额外的维度。
iOS和Android等许多常见平台以及主机的输入控制器都支持力反馈。
对特定反馈功能的支持情况取决于平台。请参阅你的平台开发文档,了解完整细节。
力反馈效果剖析
力反馈效果(Force Feedback Effect) 资产包含用于定义特定力反馈效果的属性。设计师可以利用这些属性根据许多不同的情况自定义力反馈。

通道细节
力反馈效果可以有多个通道。每个 通道 可以播放不同的效果。例如,一个通道可以在控制器右侧播放较大、较长的振动,而第二个通道可以在左侧播放较小、较短的爆发。
每个通道都有以下属性,用于控制通道效果的播放方式:
通道名称 | 说明 |
---|---|
影响左侧大(Affects Left Large) | 如果为true,将使用左侧大电机播放效果。 |
影响左侧小(Affects Left Small) | 如果为true,将使用左侧小电机播放效果。 |
影响右侧大(Affects Right Large) | 如果为true,将使用右侧大电机播放效果。 |
影响右侧小(Affects Right Small) | 如果为true,将使用右侧小电机播放效果。 |
曲线(Curve) | 控制效果随时间变化的强度。这定义了振动的模式。值高于0.0会导致振动,值低于0.0不会导致振动。 |
力反馈曲线
每个通道的效果模式由一条曲线控制。要从内部曲线编辑器向曲线添加关键帧,你可以
- 右键点击并选择"添加关键帧"。
- 双击曲线的图表打开内部曲线编辑器。

按设备覆盖
在虚幻引擎中使用力反馈资产时,每个平台对其振动电机或反馈系统功能都有不同的实现方案。力反馈资产使用 按设备覆盖(Per Device Overrides) 支持多个平台。
按设备覆盖是一个抽象层,可用于为每个平台设置不同的反馈设置。例如,你可以将强烈的振动应用于Xbox控制器,而将更细腻的振动应用于PlayStation控制器。
要修改这些设置,请点击你的力反馈效果,然后找到 细节(Details) > 按设备覆盖(Per Device Overrides) 。

设备属性
设备属性(Device Properties) 表示输入设备的不同物理属性,例如其光源颜色显示或触觉扳机阻力。
设备属性类型 | 说明 |
---|---|
基于音频的振动(Audio Based Vibration) | 向输入设备的扬声器播放声音。在支持它的平台上,此声音会以振动的形式播放,其左右音频声道分别表示控制器的左侧和右侧。 此功能为试验性功能,并且仅适用于PS5 DualSense控制器。要使用此功能,你需要将以下内容添加到你的配置。
|
设备颜色(曲线)(Device Color (Curve)) | 使用曲线更改输入设备的光源随时间变化的颜色。 此属性有特定于平台的实现方案,可能在每个平台中的表现有所不同。 |
设备颜色(静态)(Device Color (Static)) | 将输入设备的颜色设置为静态颜色。这不会在属性完成求值后重置设备颜色。你可以将其视为一次性效果,一旦启用,设备属性颜色就会固定。 此属性有特定于平台的实现方案,可能在每个平台中的表现有所不同。 |
扳机反馈(Trigger Feedback) | Set simple Trigger Feedback. 此属性有特定于平台的实现方案,可能在每个平台中的表现有所不同。 |
扳机阻力(Trigger Resistance) | 在按下扳机时为其提供开始值和结束值之间的线性阻力。 此属性有特定于平台的实现方案,可能在每个平台中的表现有所不同。 |
扳机振动(Trigger Vibration) | 设置扳机振动。 此属性有特定于平台的实现方案,可能在每个平台中的表现有所不同。 |
请参阅设备属性,获取更多文档。
时长
力反馈效果的时长基于所有通道的曲线中最后一个关键帧的位置自动计算。例如,如果有3个通道,每个通道中的最后一个关键帧分别设置为值 1.25
、 1.5
和 1.75
,则总体效果的时长是 1.75
创建力反馈效果资产
力反馈效果资产是使用 内容浏览器(Content Browser) 创建的:
-
在 内容浏览器(Content Browser) 中,点击 添加(Add) 并选择 输入(Input)> 力反馈效果(Force Feedback Effect) 。打开你刚才创建的资产。
-
默认情况下,资产有一个通道,但你可以添加通道。对于每个通道,选择你希望该通道影响的四个输出的组合。
-
按住 Shift 键并在曲线上点击 鼠标左键 可添加一个或多个关键帧。
-
在曲线编辑器中直接输入值或进行拖动来操控关键帧。
要调整关键帧之间的曲线,请右键点击曲线片段以更改其曲线功能,然后调整切线。
播放力反馈
在编辑器中预览
你可以将鼠标悬停在力反馈效果的图标上,然后点击中间显示的"播放(play)"按钮,在编辑器中预览力反馈效果。

直接到玩家
力反馈在 PlayerController
基类中实现。你需要访问本地玩家控制器,才能在目标设备或控制器上播放力反馈。
在蓝图中播放力反馈
-
使用 Get Player Controller 节点或保存的引用来获取对玩家控制器的引用。
-
拖移引用的输出引脚,然后在上下文菜单中输入
Play Force Feedback
并选择 Client Play Force Feedback 。如果在服务器上调用,力反馈将复制到所属客户端。
-
指定要直接在节点上使用的力反馈效果,或使用连接的变量指定。
-
如果你希望效果循环,请选中 循环(Looping) 。
-
(可选)在"标签(Tag)"字段中设置效果的唯一名称。此功能允许你停止效果;如果同名效果已经在播放,它会停止,而改为播放新效果。
在C++中播放力反馈
你可以在本地玩家控制器上调用ClientPlayForceFeedback
。
void ClientPlayForceFeedback
(
class UForceFeedbackEffect * ForceFeedbackEffect,
FForceFeedbackParameters Params
)
然后,你可以使用力反馈效果,指定效果是否应该循环,并(可选)选择效果的名称。 如果提供了名称,并且在原始效果结束之前播放同名的另一个力反馈效果,则原始效果会立即停止,改为播放新效果。
在世界位置
你可以将力反馈组件放置在所需源效果的世界位置中。这会播放力反馈效果,它基于与观察它的玩家的距离改变强度。
力反馈组件会在命令时播放力反馈效果,但在世界中还有物理位置。就像声音或光源一样,玩家体验到的力的强度会根据数据定义的衰减设置,随着玩家与源的距离而改变。
力反馈组件可以从源代码或蓝图附加到任意Actor,也可以在Gameplay期间动态添加。你还可以使用以下工具函数:
UGameplayStatics::SpawnForceFeedbackAtLocation
: 在给定世界位置生成UGameplayStatics::SpawnForceFeedbackAttached
: 附加到特定已有组件
这些函数会返回生成的力反馈组件,以便你可以继续操控它。但是,如果组件在完成效果播放后没有用处,请在效果结束时使用"音频销毁(Auto Destroy)"布尔选项删除该组件。