You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Enhanced Input手柄摇杆绑定异常:期望每帧获取摇杆位置

手柄左摇杆2D向量持续输入问题解决指南

问题根源

  1. ETriggerEvent::Started的设计逻辑就是仅在输入首次越过触发阈值时触发一次,自然无法获取后续的摇杆位置变化或归位事件。
  2. ETriggerEvent::Ongoing无响应,大概率是你的AimAction触发配置错误——默认触发规则不会持续上报轴输入的动态变化。

解决步骤

1. 调整输入动作的触发设置

打开AimAction的编辑界面:

  • 将Trigger类型从默认的Trigger Pressed切换为Trigger Axis(选择轴类触发逻辑)。
  • 检查Axis Dead Zone阈值设置,同时开启持续上报相关选项(如Report Threshold Changes或Report Zero Values,不同UE版本选项名称略有差异,核心是让轴输入每帧都触发事件)。

2. 使用正确的绑定代码

放弃Started/Ongoing的绑定方式,改用以下两种方案:

方案一:传统BindAxis(稳定可靠)

// 在PlayerController或Pawn的SetupInputComponent方法中编写
EnhancedInputComponent->BindAxis("AimX", this, &YourClass::HandleAimX);
EnhancedInputComponent->BindAxis("AimY", this, &YourClass::HandleAimY);

// 对应的轴输入处理函数
void YourClass::HandleAimX(float XValue)
{
    // 获取左摇杆X轴实时数值
}
void YourClass::HandleAimY(float YValue)
{
    // 获取左摇杆Y轴实时数值
}

方案二:Enhanced Input 2D Action绑定

确保AimAction为2D Axis类型,绑定ETriggerEvent::Triggered事件——该事件会在轴输入每帧变化时触发,包括摇杆归位至(0,0)的情况:

EnhancedInputComponent->BindAction(AimAction, ETriggerEvent::Triggered, this, &YourClass::HandleAim2D);

// 2D向量处理函数
void YourClass::HandleAim2D(const FInputActionValue& Value)
{
    FVector2D CurrentStickPos = Value.Get<FVector2D>();
    // 每帧获取最新的左摇杆位置向量
}

3. 校验输入映射上下文

确认输入映射上下文中,手柄左摇杆的X、Y轴已正确绑定到AimAction的对应轴输入上,避免轴映射错误。

内容的提问来源于stack exchange,提问作者Nick Charney Kaye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 06:22:18