UE4 C++常用函数使用方法总结
Posted Tanzq*
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UE4 C++常用函数使用方法总结相关的知识,希望对你有一定的参考价值。
Delay 函数的使用
FLatentActionInfo LatentInfo;
LatentInfo.CallbackTarget = this;
LatentInfo.ExecutionFunction = "此处输入之后要调用的函数名";
LatentInfo.Linkage = 1;
LatentInfo.UUID = 100;
UKismetSystemLibrary::Delay(this, 间隔时间, LatentInfo);
在游戏运行中生成某个Actor
.h
TSubclassOf<生成的类型的基类名> PawnToSpawn;
.cpp
GetWorld()->SpawnActor<生成的Actor类型>(生成的Actor对应的类, 出生地址, 出生旋转角度)
在游戏中生成AI控制的Actor
SpawnAIFromClass能够在生成actor的同时生成AI控制器
UAIBlueprintHelperLibrary::SpawnAIFromClass(GetWorld(), EnemyClass, nullptr, FVector(-198.f, -27.f, 95.f),
FRotator(0.f, 0.f, 0.f), false, nullptr);
使用委托函数进行碰撞检测
.h
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="XXXX")
USphereComponent* DetectSphere;
// 委托函数
UFUNCTION()
void OnDetectSphereOverlapBegin(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor,
UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep,
const FHitResult& SweepResult);
UFUNCTION()
void OnDetectSphereOverlapEnd(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor,
UPrimitiveComponent* OtherComp, int32 OtherBodyIndex);
.cpp
// 绑定委托函数
// 开始重叠的时候才会调用OnDetectSphereOverlapBegin函数
DetectSphere->OnComponentBeginOverlap.AddDynamic(this, &AXXXX::OnDetectSphereOverlapBegin);
// 结束重叠的时候才会调用OnDetectSphereOverlapBegin函数
DetectSphere->OnComponentEndOverlap.AddDynamic(this, &AXXXX::OnDetectSphereOverlapEnd);
让Actor自动按照指定的方向移动
FTransform Transform = GetActorTransform();
Transform.SetLocation(GetActorLocation() + UKismetMathLibrary::Normal(Direction) * DeltaSeconds * Speed);
SetActorTransform(Transform);
AI 自动寻路
EnemyController = GetController<AAIController>(); // 使用前要先获取AI控制器
FAIMoveRequest MoveRequest;
MoveRequest.SetGoalActor(TargetCharacter);
MoveRequest.SetAcceptanceRadius(0.f); // 之间相差多少算是移动停止了
FNavPathSharedPtr NavPath;
EnemyController->MoveTo(MoveRequest, &NavPath);
需要在地图中添加Nav Mesh Bounds Bolume
来规划AI的行走路线,添加之后按下P键就可以看到绿颜色,绿色的就是代表AI可以心走的区域,可以使用Nav Modifier Volume
进行修剪AI的行走区域。
AI 停止或者继续移动
EnemyController->PauseMove(RequestID); // AI 停止移动
nemyController->ResumeMove(RequestID); // AI 继续运动
将UI加载到屏幕中
- 变量声明
// 运行游戏时的UI静态资源
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="UI")
TSubclassOf<UUserWidget> GameRunHUDAsset;
// 保存UI的变量
UPROPERTY()
UUserWidget* GameRunHUD;
- 函数调用
先在BeginPlaye中初始化数据:
if (GameRunHUDAsset)
{
GameRunHUD = CreateWidget<UUserWidget>(this, GameRunHUDAsset);
}
在展示它的地方使用:
if (GameRunHUD)
{
GameRunHUD->AddToViewport();
}
在销毁它的地方使用:
if (GameRunHUD)
{
GameRunHUD->RemoveFromViewport();
}
更新摄像机管理器中摄像机的位置
void AGameCameraManager::UpdateViewTargetInternal(FTViewTarget& OutVT, float DeltaTime)
{
Super::UpdateViewTargetInternal(OutVT, DeltaTime);
OutVT.POV.Location = FVector(25.f, 0.f, 535.f);
OutVT.POV.Rotation = FRotator(-90.f, -90.f, 0.f);
OutVT.POV.FOV = 90;
}
以上是关于UE4 C++常用函数使用方法总结的主要内容,如果未能解决你的问题,请参考以下文章