近期封装输入相关逻辑,简单归纳下。
蓝图实现
内容界面右键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<UForceFeedbackEffect>(nullptr, *Path); PC->ClientPlayForceFeedback(Obj); }
获取到玩家控制器然后传入力反馈配置文件路径即可。
顺带看了下PlayerController内部的调用逻辑,其内部好像走的是InputInterface:
IInputInterface* InputInterface = FSlateApplication::Get().GetInputInterface();
通过FSlateApplication拿到对应平台的InputInterface,若想直接使用该接口配置震动,需加入Slate模块的依赖。