greenhorn同学 2024-10-25 15:26 采纳率: 100%
浏览 104
已结题

罗技G293和UE5.3

我在UE5.3的映射中找不到G29方向盘的键位
电源,USB,GHUB,小车本身运动,Windowrawinput插件 这些都检查过了

  • 写回答

22条回答 默认 最新

  • 叫兽-郭老师 新星创作者: Java技术领域 2024-10-25 15:28
    关注

    🕒下午好,题主!目前:🟢[在线]
    📢参考通义千问、由郭老师整理提供!
    📣今日诗号:山一程,水一程,身向榆关那畔行,夜深千帐灯。

    在使用Logitech G29方向盘与UE5(Unreal Engine 5)进行集成时,如果你发现方向盘的键位无法正确映射,可能是因为UE5并不直接支持某些硬件设备的输入。不过,你可以通过一些间接的方法来实现这一目标。以下是一些建议和步骤:

    方法1: 使用DirectInput或XInput适配器

    1. 确保驱动程序正确安装:首先确认你的G29方向盘已经安装了正确的驱动程序,并且可以在其他应用程序中正常工作。

    2. 使用DirectInput或XInput适配器:UE5主要支持XInput设备,但可以通过一些第三方库或适配器将DirectInput设备转换为XInput设备。

    方法2: 使用第三方库或插件

    1. 使用Windows Raw Input插件:虽然你提到已经检查过Windows Raw Input插件,但可以尝试再次确认是否正确配置。这个插件允许UE5接收来自任何HID设备的输入,包括非标准的游戏控制器。

      • 配置Raw Input插件以识别G29方向盘。
      • 在UE5项目中启用该插件。
      • 编写C++代码或蓝图逻辑来处理来自G29的方向盘输入。
    2. 使用第三方库:例如,可以考虑使用开源库如SDL(Simple DirectMedia Layer),它能够跨平台地处理各种类型的输入设备,包括游戏控制器。

      • 集成SDL到UE5项目中。
      • 使用SDL的API来检测和处理G29方向盘的输入。

    方法3: 自定义输入映射

    如果上述方法都无法满足需求,你可能需要自己编写代码来实现自定义的输入映射。

    C++示例代码片段

    // 在你的GameMode类或其他合适的类中添加以下代码
    
    #include "CoreMinimal.h"
    #include "UObject/ObjectMacros.h"
    #include "GameFramework/GameModeBase.h"
    #include "MyGameMode.generated.h"
    
    UCLASS()
    class YOURGAME_API AMyGameMode : public AGameModeBase
    {
        GENERATED_BODY()
    
    public:
        virtual void BeginPlay() override;
    };
    
    void AMyGameMode::BeginPlay()
    {
        Super::BeginPlay();
    
        // 获取所有控制器
        TArray<APlayerController*> PlayerControllers;
        GetWorld()->GetControllerManager(PlayerControllers);
    
        for (APlayerController* Controller : PlayerControllers)
        {
            if (Controller->IsLocalController())
            {
                // 假设你已经通过某种方式获取了G29的方向盘输入
                float SteeringValue = GetSteeringValueFromG29(); // 自定义函数,从G29获取方向盘值
    
                // 将方向盘值应用到玩家角色
                APawn* Pawn = Controller->GetPawn();
                if (Pawn)
                {
                    FVector NewLocation = Pawn->GetActorLocation();
                    NewLocation.Y += SteeringValue; // 假设Y轴代表方向盘转向
                    Pawn->SetActorLocation(NewLocation);
                }
            }
        }
    }
    
    // 假设的辅助函数,用于从G29获取方向盘值
    float AMyGameMode::GetSteeringValueFromG29()
    {
        // 实现具体的获取方向盘值的逻辑
        return 0.0f; // 示例返回值
    }
    

    请注意,以上代码仅为概念性示例,实际应用中需要根据你的具体需求进行调整和完善。

    希望这些建议对你有所帮助!如果还有其他问题,请随时告知。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(21条)

报告相同问题?

问题事件

  • 系统已结题 11月6日
  • 已采纳回答 10月29日
  • 赞助了问题酬金15元 10月25日
  • 创建了问题 10月25日