UE5世界中绘制射线(C++)

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//射线粗细
	);
}

运行之后效果图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43834973/article/details/142023619