11月7日 Unreal Engine Rider 学习笔记

2023-11-10

创建蓝图接口

添加蓝图Class

添加接口用指针

添加宝箱Actor类

添加Mesh类

首先在类后面添加一个公用接口声明

class ACTIONROUGELIKE_API AASItemChest : public AActor , public ISGameplayInterface//添加接口

public内新增变量

public: UPROPERTY(EditAnywhere) float TargetPitch; void Interact_Implementation(APawn* InstigationPawn); // Sets default values for this actor's properties AASItemChest();

 

添加接口方案

注意,这里的函数前缀名字一定要和接口的指针一致,我在这里浪费了近两个小时时间寻找问题

void Interact_Implementation(APawn* InstigationPawn);

添加默认Mesh

AASItemChest::AASItemChest() { // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick = true; BaseMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("BaseMesh")); RootComponent = BaseMesh; LidMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("LidMesh")); LidMesh -> SetupAttachment(BaseMesh); TargetPitch = 110.0; }

添加宝箱的旋转

void AASItemChest::Interact_Implementation(APawn* InstigationPawn) { LidMesh->SetRelativeRotation(FRotator(TargetPitch,0,0)); GEngine->AddOnScreenDebugMessage(-1, 1.f, FColor::Green, FString::Printf(TEXT("Interact_Implementation")));//输出调试信息 }

添加ActorComp

新建Actor Component

在public内新建指针

public: //新建一个void指针 void PrimaryInteract(); // Sets default values for this component's properties USInteractionComponent();

在.cpp内添加射线功能

void USInteractionComponent::PrimaryInteract() { //射线 FHitResult FHit; //碰撞体 FCollisionObjectQueryParams ObjectQueryParams; ObjectQueryParams.AddObjectTypesToQuery(ECC_WorldDynamic); //获得Actor的所有者 AActor* MyOwner = GetOwner(); FVector Eyelocation; FRotator EyeRotator; //获得Actor所有者的眼睛位置 MyOwner->GetActorEyesViewPoint(Eyelocation,EyeRotator); //设置射线发射位置和结束位置 FVector End = Eyelocation + (EyeRotator.Vector() * 1000); GetWorld()->LineTraceSingleByObjectType(FHit,Eyelocation,End,ObjectQueryParams); DrawDebugLine(GetWorld(),Eyelocation,End,FColor::Green,false,1,0,5); AActor* HitActor = FHit.GetActor(); if(HitActor) { GEngine->AddOnScreenDebugMessage(-1, 1.f, FColor::Green, FString::Printf(TEXT("HitActor")));//输出调试信息 if(HitActor->Implements<USGameplayInterface>()) { GEngine->AddOnScreenDebugMessage(-1, 1.f, FColor::Green, FString::Printf(TEXT("Implements")));//输出调试信 APawn* MyPawn = Cast<APawn>(MyOwner); ISGameplayInterface::Execute_Interact(HitActor,MyPawn); } } }

在角色类内添加接口与ActorComp

.h内新建接口声明

//设置了一个接口 UPROPERTY(VisibleAnywhere) USInteractionComponent* InteractionComp;

.cpp内添加接口

//将创建的ActorComp绑定在角色上 InteractionComp = CreateDefaultSubobject<USInteractionComponent>("InteractionComp");

添加一个按钮执行输入事件

PlayerInputComponent->BindAction("PrimaryInteraction",IE_Pressed,this,&ASCharacter::PrimaryInteraction);

在最下面添加一个输入事件

void ASCharacter::PrimaryInteraction() { if(InteractionComp) { InteractionComp->PrimaryInteract(); } }

 

效果图

 

后记:不清楚为什么CSDN总是会转存失败,发文章真的很痛苦

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

11月7日 Unreal Engine Rider 学习笔记 的相关文章

随机推荐

  • qt exec 跟show的区别

    1 要理清两个函数的区别 首先需要理解窗口模式 模式窗口 窗口会原地阻塞 只能操作该窗口 其余窗口不能再操作 只有关闭该窗口后 代码处才会获得返回值 阻塞停止 就可以操作其它界面了 半模式窗口 窗口会原地伪阻塞 虽然也是只能操作该窗口 其余
  • vue3中一个组件调用另外一个组件的方法

    vue3中一个组件调用另外一个组件的方法 1 组件化开发是vue的比较常用的 这里简单写一个vue3的组件化开发demo案例 组件1
  • C语言中的强符号和弱符号

    一 强弱符号 强弱符号针对的是处于同一工程下在不同源文件下定义的全局变量符号 链接器只处理global的符号而不处理local的符号 链接的核心是符号的重定位 在符号引用的地方找到符号定义的地方 包括函数产生的符号和全局变量产生的符号 强符
  • 刷脸支付是当下科技发展的主流旋律

    科技发展的初衷是为人民服务 而更快捷便利的为人民服务 则是当下科技发展的主流旋律 就拿超市结账来说 以前是排着队 等收银员一件件扫完商品码之后 再掏出现金进行结账 这样不仅效率慢 而且收银员还辛苦 后来进化到刷卡 扫描二维码 效率虽然提升了
  • 学术文献也有身份证?

    关注 心仪脑 查看更多脑科学知识的分享 关键词 科普散文 干货分享 生活中 证明你是你很简单 只需拿出你的身份证或护照 其实 学术文献也有如假包换 具有唯一性的身份证 对于经常需要下载文献的同学们来说 肯定再熟悉不过了 那就是文献的DOI号
  • OpenGL渲染结果发生了奇怪的拉伸和奇怪的彩条

    部分代码如下 Load create texture and generate mipmaps int width height unsigned char image SOIL load image 1 jpg width height
  • 【分享】docker引发的172.17.x.x网段无法访问

    前言 想搭建一个测试环境 折腾vmware虚拟机 发现公司的172 17网段怎么都访问不了 使用traceroute 发现 一直走172 17 0 1 无论是怎么更改配置 都是如此 查阅资料发现 当 Docker 启动时 会自动在主机上创建
  • jquery-migrate-1.2.1.min.js 作用

    在网上下载一些 js 插件使用的时候 经常出现这种情况 但是更换低版本 jquery 比如 使用 1 7 版本的 jquery 却不会报错 能正常使用 经过一番搜索 发现是因为高版本 1 9版本以后 不兼容以前的 需要引入一个 jquery
  • linux虚拟机安装后查不到IPV4地址的解决办法

    由于选择了桥接方式 网络配置设置不正确导致 编辑network配置文件 解决此问题 cd etc sysconfig network scripts vi enp0s3 若为做特殊修改 此名字是你打ifconfig查看显示的名字 改成如下配
  • AntDesign Pro安装过程

    详细资料请到官网查看文档 Ant Design Pro相关系列文章 一 AntDesign Pro安装过程 二 基于Ant DesignPro实现通过SpringBoot后台加载自定义菜单 前端部分 三 基于Ant DesignPro实现通
  • Excel数据过大,导出超时解决方案

    问题 随着业务量的增加 数据存储也越来越大 当我们从数据库读取数据生成excel时 往往会出现超时情况 尝试解决方案 考虑直接更改该请求的超时时长 但发现 随着数据增长 依然会出现超时情况 考虑采用多线程的方式 理论可以加快数据的读取效率
  • 二叉树17:路径总和

    主要是我自己刷题的一些记录过程 如果有错可以指出哦 大家一起进步 转载代码随想录 原文链接 代码随想录 leetcode链接 112 路径总和 112 路径总和 题目 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum
  • 【C进阶】深度剖析数据在内存中的存储

    目录 一 数据类型的介绍 1 类型的意义 2 类型的基本分类 二 整形在内存中的存储 1 原码 反码 补码 2 大小端介绍 3 练习 三 浮点型在内存中的存储 1 一个例子 2 浮点数存储规则 一 数据类型的介绍 前面我们已经学习了基本的内
  • 《kubernetes-1.8.0》20-examples-Deployments

    kubernetes 1 8 0 20 examples Deployments kubernetes 1 8 0 测试环境安装部署 时间 2017 12 19 一 基础知识 Deployment 为 Pod 和 ReplicaSet 提供
  • AI 机器学习实践总结

    机器学习基础 什么是机器学习 机器学习是一种从数据生成规则 发现模型 来帮助我们预测 判断 分组和解决问题的技术 机器学习是一种从数据中生产函数 而不是程序员直接编写函数的技术 说起函数就涉及到自变量和因变量 在机器学习中 把自变量叫做特征
  • 力扣(LeetCode)算法_C++——存在重复元素 II

    存在重复元素 II 给你一个整数数组 nums 和一个整数 k 判断数组中是否存在两个 不同的索引 i 和 j 满足 nums i nums j 且 abs i j lt k 如果存在 返回 true 否则 返回 false 示例 1 输入
  • 程序员的自我修养--链接、装载与库笔记:Linux共享库的组织

    共享库 Shared Library 概念 其实从文件结构上来讲 共享库和共享对象没什么区别 Linux下的共享库就是普通的ELF共享对象 由于共享对象可以被各个程序之间共享 所以它也就成为了库的很好的存在形式 很多库的开发者都以共享对象的
  • tensorflow学习笔记二:入门基础

    基本概念 使用TensorFlow前必须明白的基本概念 图 Graph 图描述了计算的过程 TensorFlow使用图来表示计算任务 张量 Tensor TensorFlow使用tensor表示数据 每个Tensor是一个类型化的多维数组
  • java---日期类汇总

    java中常用的日期类有Date SimpleDateFormat Calendar这三种 现在分别对三个类的日常使用进行大概的总结 1 Date类 1 1 基本介绍 一般常用的事Java util Date包下的Date类 在java s
  • 11月7日 Unreal Engine Rider 学习笔记

    创建蓝图接口 添加蓝图Class 添加接口用指针 添加宝箱Actor类 添加Mesh类 首先在类后面添加一个公用接口声明 class ACTIONROUGELIKE API AASItemChest public AActor public