UE5世界中绘制射线(C++)
引入的源文件库
#include “GameFramework/Actor.h”//引用游戏框架的演员Actor的源文件库
#include “Engine/TriggerVolume.h”//引用引擎的触发区域TriggerVolume的源文件库
#include “Engine/World.h”//引用引擎的世界World的源文件库
#include “DrawDebugHelpers.h”//引用射线的源文件库
在.h文件中定义射线长度
private:
UPROPERTY(Editanywhere);
//定义射线长度
float Reach = 5000.0f;
在.cpp文件中实现实现方法
// 每一帧运行(unity中的Update)
void UGrabber::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
// ...
FVector PlayerViewPointLocation;//定义射线的起点位置
FRotator PlayerViewPointRotation;//定义射线的旋转后面朝方向
//获取角色的位置和旋转方向
GetWorld()->GetFirstPlayerController()->GetPlayerViewPoint(PlayerViewPointLocation,PlayerViewPointRotation);
//射线终点位置(向量的加法,向量c=向量a+向量b)
FVector LineTraceEndLocation = PlayerViewPointLocation + PlayerViewPointRotation.Vector() * Reach;
//在场景中画线
DrawDebugLine(
GetWorld(),//获取当前运行世界(场景)
PlayerViewPointLocation,//起点位置
LineTraceEndLocation,//终点位置
FColor(255, 0, 0),//颜色
false,//是否一直在世界中显示射线
0.0f,
0.0f,
3.0f//射线粗细
);
}
运行之后效果图: