【UE5 C++】鼠标点击发射射线获取物体信息

UE小白,有错误的地方请指出。

本文使用UE5,如在UE4中使用可能需调整某些API

一、获取镜头控制器,并开启点击事件

bash 复制代码
APlayerController* playerController;
void AMeshChangeController::Item()
{
	playerController = FAITestHelpers::GetWorld()->GetFirstPlayerController();
	playerController->bEnableClickEvents = true;
	playerController->SetShowMouseCursor(true);
	playerController->EnableInput(playerController);
	
}
void AMeshChangeController::BeginPlay()
{
	Super::BeginPlay();
	Item();
	
}

二、鼠标点击发射射线

在Tick中调用射线发射逻辑

UE中API看起来没有分鼠标抬起和鼠标按下API,如有大佬知道可以评论一下。

bash 复制代码
void AMeshChangeController::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
	TestRay();
}
void
 AMeshChangeController:: TestRay()
{
	//鼠标左键触发
	if(playerController->IsInputKeyDown(EKeys::LeftMouseButton))
	{
		FHitResult OutHit;//用于接收命中的Actor
		FVector Start; //射线起点
		FVector End ;	//射线终点
		FVector Dir;	//鼠标点击的方向
		playerController->DeprojectMousePositionToWorld(Start, Dir);

		End = Start + (Dir * 100000);
		DrawDebugLine(GetWorld(), Start, End, FColor::Green, false, 100, 0, 5);//绘制射线
		bool isFinsh = GetWorld()->LineTraceSingleByObjectType(OutHit, Start, End, ECC_WorldStatic);//进行射线检测

		if (Cast<AActor>(OutHit.GetActor()))
		{
			AActor* gameObject = OutHit.GetActor();
			FString s = gameObject->GetActorNameOrLabel();
			
			UE_LOG(LogTemp, Warning, TEXT("被点击的物体,%s"), *s);
		}
	}
}
相关推荐
小汉堡编程34 分钟前
数据结构——vector数组c++(超详细)
数据结构·c++
weixin_472339463 小时前
高效处理大体积Excel文件的Java技术方案解析
java·开发语言·excel
枯萎穿心攻击4 小时前
响应式编程入门教程第二节:构建 ObservableProperty<T> — 封装 ReactiveProperty 的高级用法
开发语言·unity·c#·游戏引擎
Eiceblue5 小时前
【免费.NET方案】CSV到PDF与DataTable的快速转换
开发语言·pdf·c#·.net
tan180°6 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
m0_555762906 小时前
Matlab 频谱分析 (Spectral Analysis)
开发语言·matlab
浪裡遊7 小时前
React Hooks全面解析:从基础到高级的实用指南
开发语言·前端·javascript·react.js·node.js·ecmascript·php
彭祥.7 小时前
Jetson边缘计算主板:Ubuntu 环境配置 CUDA 与 cudNN 推理环境 + OpenCV 与 C++ 进行目标分类
c++·opencv·分类
lzb_kkk7 小时前
【C++】C++四种类型转换操作符详解
开发语言·c++·windows·1024程序员节
好开心啊没烦恼8 小时前
Python 数据分析:numpy,说人话,说说数组维度。听故事学知识点怎么这么容易?
开发语言·人工智能·python·数据挖掘·数据分析·numpy