C++ 增强输入配置

创建配置文件

InputMappingContext

  • IA_Move

  • IA_Look

InputAction

  • IA_Move

  • IA_Look

Character.h

#include "InputActionValue.h"UCLASS()
class DMC_PRATICE_API ADMC_Character_Player : public ADMC_Character_Base
{virtual void SetupPlayerInputComponent(class UInputComponent*     PlayerInputComponent) override;UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Enhaced Input", meta =                 (AllowPrivateAccess = "true"))class UInputMappingContext* DefaultMappingContext;//Movevoid MoveInputCallback(const FInputActionValue& Value);void MoveInputCompletedCallback(const FInputActionValue& Value);UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Enhaced Input", meta =                         (AllowPrivateAccess = "true"))class UInputAction* MoveAction;//Lookvoid LookInputCallback(const FInputActionValue& Value);UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Enhaced Input", meta =         (AllowPrivateAccess = "true"))class UInputAction* LookAction;//Jumpvoid JumpPressedCallback(const FInputActionValue& Value);void JumpReleasedCallback(const FInputActionValue& Value);UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Enhaced Input", meta =             (AllowPrivateAccess = "true"))class UInputAction* JumpAction;}

Character.cpp

#include "EnhancedInputSubsystems.h"
#include "EnhancedInputComponent.h"void ADMC_Character_Player::BeginPlay()
{Super::BeginPlay();//配置增强输入系统if (APlayerController* L_PlayerController = Cast<APlayerController>(Controller)) {if (UEnhancedInputLocalPlayerSubsystem* SubSystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(L_PlayerController->GetLocalPlayer())) {if (DefaultMappingContext) {SubSystem->AddMappingContext(DefaultMappingContext, 0);}}}
}void ADMC_Character_Player::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{Super::SetupPlayerInputComponent(PlayerInputComponent);if (UEnhancedInputComponent* EnhancedInputComponent = Cast<UEnhancedInputComponent>(PlayerInputComponent)) {//Lookingif (LookAction) {EnhancedInputComponent->BindAction(LookAction, ETriggerEvent::Triggered, this, &ADMC_Character_Player::LookInputCallback);}//Moveif (MoveAction) {EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &ADMC_Character_Player::MoveInputCallback);EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Completed, this, &ADMC_Character_Player::MoveInputCompletedCallback);}//Jumpif (JumpAction) {EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Started, this, &ADMC_Character_Player::JumpPressedCallback);EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Completed, this, &ADMC_Character_Player::JumpReleasedCallback);}
}//Move 
void ADMC_Character_Player::MoveInputCallback(const FInputActionValue& Value)
{FVector2D MoveAxisVector = Value.Get<FVector2D>();//TODO : 中断所有攻击的收刀动作//让其在空中移动慢一些float L_SelectScaleValue_Y = GetCharacterMovement()->IsMovingOnGround() ? MoveAxisVector.Y : MoveAxisVector.Y * 0.2f;float L_SelectScaleValue_X = GetCharacterMovement()->IsMovingOnGround() ? MoveAxisVector.X : MoveAxisVector.X * 0.2f;FVector L_ForwardDirection = UKismetMathLibrary::GetForwardVector(FRotator(0.0f, GetControlRotation().Yaw, 0.0f));FVector L_RightDirection = UKismetMathLibrary::GetRightVector(FRotator(0.0f, GetControlRotation().Yaw, 0.0f));AddMovementInput(L_ForwardDirection, L_SelectScaleValue_Y);AddMovementInput(L_RightDirection, L_SelectScaleValue_X);
}void ADMC_Character_Player::MoveInputCompletedCallback(const FInputActionValue& Value)
{FVector2D MoveAxisVector = Value.Get<FVector2D>();
}//Look
void ADMC_Character_Player::LookInputCallback(const FInputActionValue& Value)
{FVector2D LookAxisVector = Value.Get<FVector2D>();AddControllerYawInput(LookAxisVector.X);AddControllerPitchInput(LookAxisVector.Y);}//Jump
void ADMC_Character_Player::JumpPressedCallback(const FInputActionValue& Value)
{UE_LOG(LogTemp, Error, TEXT("JumpPressedCallback"));
}

在蓝图中配置增强输入文件

其他关于 移动的配置

ADMC_Character_Player::ADMC_Character_Player()
{//SpringArm//...SpringArm->bUsePawnControlRotation = true;bUseControllerRotationYaw = false;//Camera//...//Character Movement SettingGetCharacterMovement()->bOrientRotationToMovement = true;}

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

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

相关文章

Day15刷算法

110.平衡二叉树 力扣题目链接(opens new window) 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a;一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,nul…

命令执行简单

前言&#xff1a;小迪安全2022第一节反弹shell&#xff0c;小迪用的是两台都是云服务器&#xff0c;没有服务器可以在自己的主机上搭建也是可以的&#xff0c;主机上搭两个网站 思路&#xff1a;生成一个木马文件&#xff0c;下载到本机&#xff0c;然后利用本机上传到目标主机…

爆发的AI智能体(1):学习AI智能体的计划和提纲

学习计划&#xff1a; 基础知识阶段&#xff08;1-2个月&#xff09;&#xff1a; 建立AI大模型的基础知识体系&#xff0c;包括理解AI智能体的基本概念及其与大模型&#xff08;如GPT、通义千问&#xff09;结合后的功能。学习AI智能体的关键构成&#xff0c;如大模型、规划&a…

Vue 专属状态管理库Pinia的使用与实践

目录 前言1. 什么是 Pinia&#xff1f;2. Pinia 的安装与基本配置2.1 安装 Pinia2.2 在 Vue 应用中配置 Pinia 3. 使用 Pinia 创建和管理状态3.1 定义一个简单的 Store3.2 在组件中使用 Store 4. Pinia 的高级功能4.1 使用 Getter 简化数据处理4.2 支持异步操作4.3 在服务端渲染…

springBoot插件打包部署

打包插件spring-boot-maven-plugin 不使用插件&#xff0c;运行时&#xff0c;异常信息为“没有主清单属性” 本地部署 杀进程

python使用poetry作为包管理

一、pip的弊端 由于Python使用pip安装时不会自动解决冲突&#xff0c;不会自动删除相关联的包&#xff0c;例如安装flask时&#xff0c;pip install flask会额外安装一些包&#xff0c;但是pip uninstall是不会删除相关的包&#xff0c;只会删除flask本身的包。 二、推荐使用…

神经网络中常用的激活函数(公式 + 函数图像)

激活函数是人工神经网络中的一个关键组件&#xff0c;负责引入非线性&#xff0c;从而使神经网络能够学习和表示复杂的非线性关系。没有激活函数&#xff0c;神经网络中的所有计算都是线性变换&#xff0c;而线性模型的表达能力有限&#xff0c;无法处理复杂的任务。 激活函数…

mysql复习题(实验7-8)

建立一个学生入学信息管理&#xff08;x_y&#xff09;数据库&#xff0c;设计其数据库模式为&#xff1a; 学生表&#xff08;学号&#xff0c;姓名&#xff0c;性别&#xff0c;入学成绩&#xff0c;籍贯&#xff0c;院系编号&#xff09; 院系表&#xff08;院系编号&…

n个整数后移m个位置

题目描述 有n个整数&#xff0c;使前面各数顺序向后移m个位置&#xff0c;最后m个数变成前面m个数&#xff0c;见图。写一函数&#xff1a;实现以上功能&#xff0c;在主函数中输入n个数和输出调整后的n个数。 输入描述 输入数据的个数n n个整数 移动的位置m 输出描述 移动后的…

Python——面向过程和面向对象

一.两大编程思想 面向过程&#xff1a;事情比较简单&#xff0c;可以用线性的思维去解决问题。例&#xff1a;c语言。 面向对象&#xff1a;事情比较复杂&#xff0c;使用简单的线性思维无法解决。例&#xff1a;python。 二.面向对象 1.类和对象 类和对象&#xff1a;由无…

【机器学习】---神经架构搜索(NAS)

这里写目录标题 引言1. 什么是神经架构搜索&#xff08;NAS&#xff09;1.1 为什么需要NAS&#xff1f; 2. NAS的三大组件2.1 搜索空间搜索空间设计的考虑因素&#xff1a; 2.2 搜索策略2.3 性能估计 3. NAS的主要方法3.1 基于强化学习的NAS3.2 基于进化算法的NAS3.3 基于梯度的…

图像上显示中文文本 - python 实现

该示例是在图像上显示中文文本&#xff0c;并用opencv的显示方式显示。 注意&#xff1a;SimHei.ttf&#xff08;黑体字体&#xff09;为字体文件&#xff0c;Windows 默认字体路径&#xff1a;C:/Windows/Fonts/SimHei.ttf 具体实现代码如下&#xff1a; # -*-coding:utf-8…

dotnet:依赖注入

依赖注入的基本概念 依赖&#xff1a;一个类依赖于另一个类或接口来完成其功能。注入&#xff1a;依赖项由外部提供给类&#xff0c;而不是由类自己创建。 builder.Services.AddScoped<IMyDependency, MyDependency>(); 这行代码使用 AddScoped 方法将 IMyDependency 接…

JAVA题目笔记(十七)TreeSet对象排序+Map集合练习

一、TreeSet对象排序&#xff1a; 需求&#xff1a; public class Student implements Comparable<Student>{private String name;private int age;private int grade_Yu;private int grade_Shu;private int grade_Yin;private int sumthis.grade_Yinthis.grade_Shuthis…

w046基于web的古典舞在线交流平台的设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…

【迅为】瑞芯微-RK3568开发板Linux+HAL启动测试

迅为iTOP&#xff0d;RK3568开发板AMP AMP SDK支持Rockchip平台异构多系统AMP&#xff08;非对称多核架构&#xff09;的开发软件包&#xff0c;支持Linux(Kernel)、Standalone(Hal)、RTOS(RT-Thread)组合AMP构建形式。可以满足一些特定行业应用&#xff0c;如电力物联网、电…

渗透测试--Windows系统下的文件传输手段

很多情况下&#xff0c;我们渗透测试都面临需要上传和下载文件的文件传输需求。本文专门探讨Windows服务器或主机上实施文件传输的各种方案。该专题比较敏感&#xff0c;该文章仅供学习使用&#xff0c;不要用于非法用途。 编码方法 Linux检查文件MD5 md5sum id_rsa Linux编…

视觉常用Backbone大全:VisionTransformer(ViT)

视觉常用Backbone大全 今天介绍的主干网络模型叫VisionTransformer&#xff0c;是一种将 Transformer 架构应用于计算机视觉任务的模型&#xff0c;通过将图像进行切块&#xff0c;将图片转变为self-attention认识的token输入到Transformer模块中&#xff0c;实现了Transformer…

星海智算:Stable Diffusion3.5镜像教程

Stable Diffusion3.5 模型介绍 Stable Diffusion 3.5是由Stability AI推出的最新图像生成模型&#xff0c;它是Stable Diffusion系列中的一个重大升级。这个模型家族包括三个版本&#xff0c;分别是Stable Diffusion 3.5 Large、Stable Diffusion 3.5 Large Turbo和Stable Dif…

[JavaWeb] 尚硅谷JavaWeb课程笔记

1 Tomcat服务器 Tomcat目录结构 bin&#xff1a;该目录下存放的是二进制可执行文件&#xff0c;如果是安装版&#xff0c;那么这个目录下会有两个exe文件&#xff1a;tomcat10.exe、tomcat10w.exe&#xff0c;前者是在控制台下启动Tomcat&#xff0c;后者是弹出GUI窗口启动To…