UE4 C++调用手柄震动


近期封装输入相关逻辑,简单归纳下。

蓝图实现

内容界面右键Miscellaneous->Force Feedback Effect,创建力反馈对象并填写相关参数:

然后在蓝图中用Spawn Force Feedback at Location调用这个力反馈配置文件,

或是创建Force Feedback组件,根据角色是否进入手柄震动区域来进行力反馈响应。

C++实现

C++部分的手柄力反馈,包括PS手柄的亮灯颜色等,都可以在PlayerController中直接设置。

//#include "GameFramework/ForceFeedbackEffect.h"
//#include "Kismet/GameplayStatics.h"

APlayerController* PC = UGameplayStatics::GetPlayerController(this, 0);
if (PC) {
    FString path = "/Game/ThirdPersonCPP/NewForceFeedbackEffect.NewForceFeedbackEffect";
    UForceFeedbackEffect* obj = LoadObject(nullptr, *path);
    PC->ClientPlayForceFeedback(obj);
}

获取到玩家控制器然后传入力反馈配置文件路径即可。

顺带看了下PlayerController内部的调用逻辑,其内部好像走的是InputInterface:

IInputInterface* InputInterface = FSlateApplication::Get().GetInputInterface();

通过FSlateApplication拿到对应平台的InputInterface,若想直接使用该接口配置震动,需加入Slate模块的依赖。