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

news2024/11/25 7:03:39

一、基本配置 

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

//头文件代码
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);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1089908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

虚拟机安装Docker

安装Docker Docker 分为 CE 和 EE 两大版本。CE 即社区版&#xff08;免费&#xff0c;支持周期 7 个月&#xff09;&#xff0c;EE 即企业版&#xff0c;强调安全&#xff0c;付费使用&#xff0c;支持周期 24 个月。 Docker CE 分为 stable test 和 nightly 三个更新频道。…

【LeetCode高频SQL50题-基础版】打卡第7天:第36~40题

文章目录 【LeetCode高频SQL50题-基础版】打卡第7天&#xff1a;第36~40题⛅前言按分类统计薪水&#x1f512;题目&#x1f511;题解 上级经理已离职的公司员工&#x1f512;题目&#x1f511;题解 换座位&#x1f512;题目&#x1f511;题解 电影评分&#x1f512;题目&#x…

buuctf week2-web-ez_sql

闭合之后尝试判断字段数&#xff0c;存在WAF&#xff0c;使用大小写绕过&#xff08;后面的sql语句也需要进行大小写绕过&#xff09; ?id1 Order by 5-- 测出有5列 ?id1 Order by 6-- 查一下数据库名、版本、用户等信息 ?id1Union Select database(),version(),user(),4,…

ACP.复盘方法

复盘要怎么做的有水准&#xff0c;让领导满意&#xff0c;方式方法很重要。今天给你们安利5种复盘方法&#xff0c;保准你省事&#xff0c;领导还满意。 一、KPT复盘法 7月份年中一直在做和复盘相关的事&#xff0c;像公司的OKR复盘、年中战略规划&#xff0c;不过日常很多生…

Unity应用开发——开启无限创造之旅

Unity是一款令人叹为观止的跨平台游戏开发引擎&#xff0c;它打开了创作者们的无限创造之门。Unity不仅仅限于游戏开发&#xff0c;它还在虚拟现实、增强现实、模拟训练等多个领域取得了巨大成功。在经过充满激情和创意的Unity应用开发课程之后&#xff0c;世达教育迎来了这段精…

十七、【渐变工具组】

文章目录 渐变工具油漆桶工具 渐变工具 渐变样式有5种&#xff0c;分别是线性渐变&#xff0c;径向渐变&#xff0c;角度渐变&#xff0c;对称渐变&#xff0c;菱形渐变 另外渐变工具的颜色可以进行编辑&#xff0c;需要先打开渐变编辑工具&#xff1a; 如何使用渐变编辑工…

grafana api创建dashboard 记录

文章目录 json model导入申请api key创建dashboard删除dashboard json model导入 直接在ui通过json model 导入&#xff0c;开发自己用还好&#xff0c;但对非开发人员不太友好&#xff0c;故考虑通过api后台自动创建 api doc : https://grafana.com/docs/grafana/v9.3/devel…

【重拾C语言】十、递归程序设计

目录 前言 十、递归程序设计 10.1 计算n&#xff01;——递归程序设计 10.2 程序设计实例 10.2.1 汉诺塔 10.2.2 齿轮 10.2.3 组合 10.3 计算算术表达式的值——间接递归 10.4 递归程序执行过程 前言 递归程序设计是一种编程技术&#xff0c;其中一个函数通过调用自身…

Navicat For MySQL使用指南

勾选填充零后的效果&#xff0c;就是不够的位数用零来补齐&#xff01;

Eclipse插件安装版本不兼容问题解决方案——Papyrus插件为例

项目场景: Eclipse Papyrus安装后,没有新建Papyrus工程选项,也没有新建Papyrus Model的选项。 打开Papyrus Model会报错 问题描述 同样的,安装其他插件也是。可能某个插件之前安装是好用的,结果Eclipse的版本更新了,就再也安装不好用了 原因分析: 根本原因是因为包之…

交通 | python网络爬虫:“多线程并行 + 多线程异步协程

推文作者&#xff1a;Amiee 编者按&#xff1a; 常规爬虫都是爬完一个网页接着爬下一个网页&#xff0c;不适应数据量大的网页&#xff0c;本文介绍了多线程处理同时爬取多个网页的内容&#xff0c;提升爬虫效率。 1.引言​ 一般而言&#xff0c;常规爬虫都是爬完一个网页接着…

【MySql】7- 实践篇(五)

文章目录 1. 加锁规则1.1 案例一&#xff1a;等值查询间隙锁1.2 案例二&#xff1a;非唯一索引等值锁1.3 案例三&#xff1a;主键索引范围锁1.4 案例四&#xff1a;非唯一索引范围锁1.5 案例五&#xff1a;唯一索引范围锁 bug1.6 案例六&#xff1a;非唯一索引上存在"等值…

TLS 详解

目录 TLS 定义HTTPS HTTP over TLS.加密记录层分片 (Fragmentation)记录压缩和解压缩 (Record compression and decompression)空或标准流加密 (Null or standard stream cipher)CBC 块加密 (分组加密)记录有效载荷保护 (Record payload protection)密钥计算 (Key calculation…

【C++初阶】关键字命名空间缺省函数函数重载入门必看!!!超详解!!!

主页点击直达&#xff1a;个人主页 我的小仓库&#xff1a;代码仓库 C语言偷着笑&#xff1a;C语言专栏 数据结构挨打小记&#xff1a;初阶数据结构专栏 Linux被操作记&#xff1a;Linux专栏 LeetCode刷题掉发记&#xff1a;LeetCode刷题 算法&#xff1a;算法专栏 C头…

解锁互联网安全的新钥匙:JWT(JSON Web Token)

目录 前言 一、JWT简介 1. 什么是JWT&#xff1f; ​编辑 2. JWT的工作原理 3.JWT如何工作的 4. JWT的优势 5. 在实际应用中使用JWT 6.传统Session和JWT认证的区别 6.1.session认证方式 6.2.JWT认证方式 7.基于Token的身份认证 与 基于服务器的身份认证 二、JWT的…

一文带你快速上手MySQL8窗口函数,实现更高效的数据处理

文章目录 MySQL8窗口函数前言窗口函数相关概念介绍窗口函数分区介绍 窗口函数的使用语法介绍实战演练示例一&#xff1a;聚合函数示例二&#xff1a;排名函数示例三&#xff1a;偏移函数示例四&#xff1a;分布函数示例五&#xff1a;首尾函数示例六&#xff1a;其它函数 总结 …

GIS小技术分享(一):python中json数据转geojson或者shp

1.环境需求 geopandspandasshapelyjsonpython3 2.输入数据&#xff08;path字段&#xff0c;线条&#xff09; [{"id": "586A685D568311B2A16F33FCD5055F7B","name": "普及江","path": "[[116.35178835446628,23.57…

NeuroImage | 右侧颞上回在语义规则学习中的作用:来自强化学习模型的证据

在现实生活中&#xff0c;许多规则的获取通常需要使用语言作为桥梁&#xff0c;特别是语义在信息传递中起着至关重要的作用。另外&#xff0c;个体使用的语言往往具有明显的奖励和惩罚元素&#xff0c;如赞扬和批评。一种常见的规则是寻求更多的赞扬&#xff0c;同时避免批评。…

十八、【模糊工具组】

文章目录 模糊工具锐化工具涂抹工具 模糊工具 使用模糊工具可以对图像边缘以及其他一部分区域进行编辑&#xff0c;可以使其变得模糊&#xff0c;从而更加突出主体&#xff1a; 锐化工具 锐化工具跟模糊工具是相反的一个工具啊&#xff0c;锐化工具主要是增强图像的颗粒度&am…

20基于MATLAB的车牌识别算法,在环境较差的情景下,夜间识别度很差的车牌号码可以精确识别出具体结果,程序已调通,可直接替换自己的数据跑。

基于MATLAB的车牌识别算法&#xff0c;在环境较差的情景下&#xff0c;夜间识别度很差的车牌号码可以精确识别出具体结果&#xff0c;程序已调通&#xff0c;可直接替换自己的数据跑。 20matlab车牌识别 (xiaohongshu.com)