Unreal Engine学习

news2025/1/10 3:31:31

1,什么是组件?

继承于Uobject的为了给actor以及其他在场景中显示出来的类增加新的功能的一个东西

2,可以自己创建一个蓝图,然后将蓝图拖到场景中,也可以直接在c++ class中将蓝图拖到场景中 

3,创建一个组件:

UStaticMeshComponent * StaticMesh(组件在蓝图中的名字) = CreateDefaultSubobject<UStaticMeshComponent(组件名)>(TEXT("MyStaticMesh(组件标志)"));

4,设置Actor的位置:

SetActorLocation(Vectorxxx);

5,设置偏移量

//第二个参数:去检查移动的轨迹上是否有可以发生碰撞的物体
AddActorLocalOffset(Vectorxxx, true);

6,宏 

meta=(ClampMin=-5.0f, ClampMax = 5.0f, UIMin = -5.0f, UIMax = 5.0f)

ClampMin=-5.0f, ClampMax = 5.0f表示输入范围:-5~5

UIMin = -5.0f, UIMax = 5.0f表示鼠标拖动范围:-5~5

7,如何查找函数的头文件,用法等

(1)搜索Unreal doc,点击进入,在搜索框中填入函数,回车

(2)点击c++ API

 ps:AddActorLocalOffset这个函数,ue5中木有

8,如何添加头文件

(1)在.cpp文件中添加

 (2)在.h文件中添加

要添加在  #include "MyActor.generated.h" 之前 

9,如何穿透一个物体(如何不与一个物体发生碰撞)

碰撞是相互的,我们只要使一个物体忽略掉另一个物体的碰撞,碰撞就不会 发生

比如:

物体A:   碰撞 --> 碰撞预设 --> 改为custom

                对象类型改为physicsbody(任选一个就行)

物体B:   碰撞 --> 碰撞预设 --> 改为custom

                 碰撞响应 --> 物体响应 --> 忽略的那竖行勾上physicsbody(物体A的对象类型)

10,如何在不开启模拟重力的情况下,产生碰撞,并且获取碰撞的坐标

		FHitResult HitResult;
		/*第二个参数:
		* https://www.bilibili.com/video/BV1Ce4y1e7PE?p=35&vd_source=9861d52a3c015d8d0859fa02af9dd6bd
		*检查移动的轨迹上是否有可以发生碰撞的物体,我测试了,
		*在设置为TRUE的情况下,无论有没有模拟物理都一样,在物体碰撞之后,就会停住
		*如果设置为false,没有模拟物理的情况下,那么就不会发生碰撞
		*						    有模拟物理的情况下,碰撞了,但是会擦着另一个物体表面继续运动
		*/
        //TickLocationOffset是一个偏移量,类型是vector
		AddActorLocalOffset(TickLocationOffset, true, &HitResult);
		UE_LOG(LogTemp, Warning, TEXT("X: %f, Y: %f, Z: %f"), HitResult.Location.X, HitResult.Location.Y, HitResult.Location.Z);

11,创建根组件,并且将静态网格组件附加到其上

	RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("RootCompnent"));
	StaticMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MyStaticMesh"));
	StaticMesh->SetupAttachment(GetRootComponent());

12,在tick函数移动

按键映射函数只是修改值,真正调用移动函数的是tick

这样是为了不同帧率的玩家,在一秒钟移动的位置相同,具体看13条

//只是修改值,真正调用移动函数的是tick
void AMyPawn::MoveForward(float Value)
{
	Velocity.X = FMath::Clamp(Value, -1.0f, 1.0f) * MaxSpeed;
}

void AMyPawn::MoveRight(float Value)
{
	Velocity.Y = FMath::Clamp(Value, -1.0f, 1.0f) * MaxSpeed;
}
void AMyPawn::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
	AddActorLocalOffset(Velocity * DeltaTime, true);
}

13,为什么移动的时候,要乘deltatime

 

14,更改附着关系之后,蓝图没有更新怎么办

蓝图右击--->资产操作---->重新加载

15,player start与game mode的作用

玩家出生点PlayerStart 继承于AActor,因此可以被放置到场景中。它的作用就是标记玩家出生的位置,游戏开始后,程序会查找玩家出生点的位置,并生成一个GameMode中配置的APawn,放置到该处,如果关卡里没有PlayerStart ,那么系统会在世界坐标(0,0,0)出产生一个APawn。
PlayerStart 这个设计的初衷其实就是为了让关卡设计师和角色设计师的工作解耦合

虚幻引擎图文笔记:玩家出生点(PlayerStart)_开发游戏的老王的博客-CSDN博客_ue4 playerstartPlayerStart`这个设计的初衷其实就是为了让关卡设计师和角色设计师的工作解耦合https://blog.csdn.net/ttm2d/article/details/107082951

 16,如何添加映射?

(1),添加轴映射 

(2)添加映射函数

pawn.h文件中添加
	
void MoveForward(float Value);
void MoveRight(float Value);

pawn.cpp文件中添加
void AMyPawn::MoveForward(float Value)
{
	Velocity.X = FMath::Clamp(Value, -1.0f, 1.0f) * MaxSpeed;
}

void AMyPawn::MoveRight(float Value)
{
	Velocity.Y = FMath::Clamp(Value, -1.0f, 1.0f) * MaxSpeed;
}

(3)注册玩家

AMyPawn::AMyPawn()
{
 	// Set this pawn to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;

	AutoPossessPlayer = EAutoReceiveInput::Player0;

	MaxSpeed = 100.0f;
	Velocity = FVector::ZeroVector;
} 

(4)绑定映射函数

// Called to bind functionality to input
void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);

	//玩家没有按下对应的键的时候,也会每一帧都调用以下映射函数
	PlayerInputComponent->BindAxis(TEXT("MoveForward"), this, &AMyPawn::MoveForward);
	PlayerInputComponent->BindAxis(TEXT("MoveRight"), this, &AMyPawn::MoveRight);
}

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

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

相关文章

vuex的新写法引入mapState省略$store.state

vuex的新写法&#xff1a; state简写&#xff08;映射&#xff09;&#xff1a;mapState state里都是状态&#xff0c;所以mapState在computed中使用&#xff1b;state映射也就是引入mapState&#xff0c;然后state可以简写$store.state.状态 > 状态&#xff1a;前面的$s…

多点Dmall冲刺港交所上市:前三季度营收11亿元,张文中为实控人

撰稿|汤汤 来源|贝多财经 日前&#xff0c;多点数智有限公司&#xff08;下称“多点Dmall”或“多点”&#xff09;向港交所递交招股书&#xff0c;准备在港交所主板上市&#xff0c;瑞信、招银国际为其联席保荐人。 据贝多财经了解&#xff0c;多点Dmall在境内的主要经营主体…

《Linux运维实战:MongoDB数据库全量逻辑备份恢复(方案二)》

一、备份与恢复方案 Mongodb中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项&#xff0c;也可以根据指定的条件导出数据&#xff0c;只支持导出集合(collection)&#xff0c;不支持导出库。 由于mongodb实例里面的数据类…

宠物网页作业HTML 大一作业HTML宠物网页作业 web期末大作业HTML 动物网页作业HTML HTML制作宠物网页作业css

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

区块链行业的一次“里程碑时刻”…

12月8日&#xff0c;由中国新闻社、中国新闻周刊主办的第十八届中国企业社会责任论坛成功举办&#xff0c;欧科云链入选“2022年度责任企业”&#xff0c;成为历届唯一获奖的区块链科技企业。 1999年1月&#xff0c;在瑞士达沃斯世界经济论坛上&#xff0c;联合国秘书长安南提出…

如何搞一个在线的Shape生成

Shape是Android中一个必不可少的资源&#xff0c;很多的背景&#xff0c;比如圆角&#xff0c;分割线、渐变等等效果&#xff0c;几乎都有它的影子存在&#xff0c;毕竟写起来简单便捷&#xff0c;使用起来也是简单便捷&#xff0c;又占用内存小&#xff0c;谁能不爱&#xff1…

【Python游戏】咱就说Python实现一个蔡徐坤大战篮球的小游戏,可还行? | 附带源码

前言 halo&#xff0c;包子们下午好 小编作为一个鸡你太美的忠实黑粉&#xff0c;怎么能不实行一个蔡徐坤大战篮球的小游戏呢 今天小编用Python给大家实现啦 今天不为别的&#xff0c;就是想督促大家学习 废话不多说&#xff0c;直接开整 相关文件 关注小编&#xff0c;私信…

GoDiagram.Winforms完全重写版-Crack

介绍GoDiagram 10 – 用于 .NET 项目的新图表库。 GoDiagram 10 是 GoDiagram 的完全重写&#xff0c;基于 GoJS API&#xff0c;具有相同的功能。这包括节点和链接的模板、数据绑定、JSON 模型数据格式、动画和许多其他功能。 在 C# 中为 .NET 构建图表 流程图 构建交互式流程…

安卓APP源码和设计报告——仿淘宝购物APP

2021—2022学年第二学期期末考试 《Android手机软件开发》实践考核 项目设计说明书 项目名称&#xff1a; 购物APP的设计与实现 专 业&#xff1a; 计算机科学与技术 学 号&#xff1a; 姓 名&#xff1a; 任课教师&#xff1a; 2022年6月12日 目 录 1.项目概述11 2…

磨金石教育摄影技能干货分享|优秀摄影欣赏—足球经典名画

世界杯正在如火如荼的进行&#xff0c;相信通过本次世界杯先进的转播技术&#xff0c;又会诞生一大批新的足球迷。而随着拍摄技术的进步&#xff0c;足球场上的许多精彩瞬间也被更清晰的抓拍下来。 1、c罗的惊讶 这张照片相信看过本届世界杯的朋友都不陌生&#xff0c;c罗做出…

[效率工具] Git下对敏感文件/内容的处理

&#x1f341;简介 &#x1f517; 相关资料 : 一文玩转Git 有时候我们提交代码到GitHub/Giglab平台, 发现一不小心把带有账号密码以及服务器地址的代码等敏感信息提交到公共平台,对于这种情况我们应该使用一些方案进行规避。下面就讨论下这些方案&#xff01; 方法一: 配置文件…

『SnowFlake』雪花算法的详解及时间回拨解决方案

&#x1f4e3;读完这篇文章里你能收获到 图文形式为你讲解原生雪花算法的特征及原理了解时间回拨的概念以及可能引起发此现象的操作掌握时间回拨的解决方案—基于时钟序列的雪花算法关于雪花算法的常见问题解答 文章目录一、原生的雪花算法1. 简介2. 特征3. 原理3.1 格式&…

什么软件可以去除照片水印?这3种方法可以帮你轻松搞定

大家有过这样的烦恼吗&#xff1f;在网上看到一张喜欢的图片&#xff0c;想要将它保存下来做壁纸&#xff0c;但是却发现图片里面有个大大的水印&#xff0c;十分影响效果。或者是在网上看到一张喜欢的头像&#xff0c;里面也有着一个大大的水印&#xff0c;我们该放弃这张图片…

【能源物联网】物联网体系结构与建筑能源管理系统的相关性分析

摘要&#xff1a; 在能源形势紧张的大趋势下&#xff0c;高能耗的大型公共建筑能源管理系统的建设逐渐受到重视&#xff0c;以物联网技术及基础的建筑能源管理平台可以提供即时、准确、高效的能源管理策略。系统阐述了结合物联网技术的建筑能源管理构建方法&#xff0c;对物联…

低代码助力制造型企业——工时管理系统

生产管理是制造企业的核心职能之一,工时管理是生产管理的重要方法和手段&#xff0c;可以帮助更好的掌控交货期&#xff0c;控制成本&#xff0c;更准确的安排生产计划。在当前激烈竞争的市场环境下&#xff0c;企业必须以现代化的理念结合不断改进的管理方法才能及时抓住发展机…

Aspose.GIS 22.10.0 for .NET Crack

概述 获取最完整和最强大的 API&#xff0c;以创建受其启发并基于它们的新项目&#xff0c;而不是通过为您编写此处已有的内容来浪费资源和精力。适用于 .NET 的 GIS API 是一种使用 GIS 数据的简单方法完全托管的代码&#xff0c;具有简单的界面、部署和数据安全性。 我们的 .…

Python FastAPI 多参数传递

Python FastAPI请求参数传递 FastAPI多参数传递类型 FastAPI通过模板来匹配URL中的参数列表&#xff0c;大致有如下三类方式传递参数&#xff1a; 路径参数传递&#xff1a;获取自定义的构造URL中的参数GET参数传递&#xff1a;获取一个URL后面带的?param11&param22这种…

ubuntu20.04+anaconda+yolov5训练kitti数据集

yolov5安装流程 一、Anaconda安装 1.Anaconda官网:https://www.anaconda.com/products/distribution 2.点击Download&#xff0c;下载For Linux版本 3.到下载的文件夹&#xff0c;输入&#xff1a; bash ~/Downloads/Anaconda3-xxxxxxxxx.sh # 根据下载的文件不同&#xff…

火爆全网的ChatGPT机器人,你玩了吗?

最近几天&#xff0c;由OpenAI公司发布的ChatGPT聊天机器人火了&#xff0c;小杨也怀着对新鲜事物的好奇&#xff0c;亲自体验了一下这个火爆全网&#xff0c;让人沉迷其中无法自拔的ChatGPT聊天机器人&#xff0c;经过体验&#xff0c;我只想用一个字来表达我的感受&#xff0…

⚡通信管理模块⚡

目录 &#x1f333;.通信管理模块的介绍 &#x1f333;.通信模块的设计 &#x1f333;.ListShow函数 &#x1f333;.UpLoad函数 &#x1f333;.DownLoad函数 下载的断点续传 &#x1f333;.通信管理模块的介绍 通信管理模块管理着服务器与浏览器之间的通信: 当服务器收…