Unreal Engine学习
创始人
2024-03-29 19:19:06
0

1,什么是组件?

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

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

3,创建一个组件:

UStaticMeshComponent * StaticMesh(组件在蓝图中的名字) = CreateDefaultSubobject(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是一个偏移量,类型是vectorAddActorLocalOffset(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(TEXT("RootCompnent"));StaticMesh = CreateDefaultSubobject(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);
}

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...