虚幻引擎5:增强输入的使用方法

一、包引入

在项目中的build.cs文件中引入包

二、基本配置

1.创建一个输入映射上下文(映射表)

2.创建自己需要的操作映射或者轴映射

3.创建完成之后进入这个映射,来设置类型,共有4个类型

1.Digital:是旧版操作映射类型,一般是按下抬起来使用,像跳跃,之类的

2.剩余三个都是轴映射类型,Axis1D:单向轴,一般是油门按键,摇杆之类的

3.Axis2D:有x,y两个方向,2D轴,一般是移动之类的

4.Axis3D:有x,y,z三个方向

4.将设置的映射添加至上下文中

1.操作映射的配置就添加个按键直接使用就好了
2.轴映射的配置

5.然后设置对应的按键。基本设置就完成了

三、使用方法

然后我这边选择使用C++来使用

1.在使用此配置的角色类中引入按键映射mapping

cpp 复制代码
//头文件代码
UPROPERTY(EditAnywhere)//此标记可以在蓝图中导入映射资产
class UInputMappingContext*MappingContext;
UPROPERTY(EditAnywhere)
class UInputAction * JumpAction;//跳跃事件的action
UPROPERTY(EditAnywhere)
UInputAction * MoveAction;//移动事件的action
virtual void BeginPlay() override;
virtual void ALGPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
//轴映射移动绑定的函数,必须带有一下参数格式必须一致
void Move(const FInputActionValue& Value);

//cpp文件代码
//按键操作一般在beginplay中执行
void ALGPlayerCharacter::BeginPlay()
{
	Super::BeginPlay();
    //判断一下资产是否添加,否则UE会崩溃
	if(MappingContext)
	{
        //因为按键是在角色身上执行的,所以需要找到角色控制器
		if (APlayerController* PC = Cast<APlayerController>(GetController()))
		{
            //通过角色控制找到增强输入子系统
UEnhancedInputLocalPlayerSubsystem*Subsystem=ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PC->GetLocalPlayer());
            //将映射表添加至系统中
			Subsystem->AddMappingContext(MappingContext,0);
		}
		
	}
}

void ALGPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);
//使用了增强输入后,旧的输入控件就无法使用,必须使用新的
	if(UEnhancedInputComponent*EnhancedInputComponent = Cast<UEnhancedInputComponent>(PlayerInputComponent))
	{
        //跳跃事件的绑定
		EnhancedInputComponent->BindAction(JumpAction,ETriggerEvent::Started,this,&ALGPlayerCharacter::DoJump);
        //移动事件的绑定
		EnhancedInputComponent->BindAction(MoveAction,ETriggerEvent::Triggered,this,&ALGPlayerCharacter::Move);
	}
}

//绑定的移动事件
void ALGPlayerCharacter::Move(const FInputActionValue& Value)
{
    获取绑定事件给出的轴值
	FVector2D InputValue = Value.Get<FVector2D>();
	UE_LOG(LogTemp, Log, TEXT("ok%s"),*InputValue.ToString())
    //前后移动
	AddMovementInput(GetActorForwardVector(), InputValue.Y);
    //左右移动
	AddMovementInput(GetActorRightVector(), InputValue.X);
}
相关推荐
笑鸿的学习笔记12 小时前
虚幻引擎5-Unreal Engine笔记之SET节点的输出引脚获取设置后的最新变量值
笔记·ue5·虚幻
Zhichao_9714 小时前
【UE5.1 C++】VS2022下载安装
ue5
m0_552200821 天前
《UE5_C++多人TPS完整教程》学习笔记37 ——《P38 变量复制(Variable Replication)》
c++·游戏·ue5
曹勖之1 天前
在 UE5 蓝图中配置Actor类型的Asset以作为位置和旋转设置目标
ue5·机器人
曹勖之1 天前
UE 5 和simulink联合仿真,如果先在UE5这一端结束Play,过一段时间以后**Unreal Engine 5** 中会出现显存不足错误
matlab·ue5·机器人
AgilityBaby1 天前
UE5 2D角色PaperZD插件动画状态机学习笔记
笔记·学习·ue5
AgilityBaby1 天前
UE5 创建2D角色帧动画学习笔记
笔记·学习·ue5
ue星空4 天前
UE音频中间件wwise插件
学习·ue5·音视频
AgilityBaby6 天前
UE5打包项目设置Project Settings(打包widows exe安装包)
c++·3d·ue5·游戏引擎·unreal engine
AgilityBaby7 天前
UE5蓝图暴露变量,在游戏运行时修改变量实时变化、看向目标跟随目标Find Look at Rotation、修改玩家自身弹簧臂
笔记·游戏·ue5·游戏引擎·蓝图