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

这篇具有很好参考价值的文章主要介绍了【UE5 C++】鼠标点击发射射线获取物体信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

UE小白,有错误的地方请指出。
本文使用UE5,如在UE4中使用可能需调整某些API

方法一

1.获取镜头控制器,并开启点击事件

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

2.鼠标点击发射射线

在Tick中调用射线发射逻辑
UE中API看起来没有分鼠标抬起和鼠标按下API,如有大佬知道可以评论一下。文章来源地址https://www.toymoban.com/news/detail-614735.html


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);
		}
	}
}

方法二

1.获取镜头控制器,并开启点击事件

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

2.使用射线API

		playerController->HitResultTraceDistance = 1000000;
		playerController->GetHitResultUnderCursor(ECollisionChannel::ECC_Visibility,true,OutHit);
		if (Cast<AActor>(OutHit.GetActor()))
		{

		}

到了这里,关于【UE5 C++】鼠标点击发射射线获取物体信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity在物体内部发射射线检测不到物体的解决方式

    在Unity2018.1.18上不大好用。

    2024年02月15日
    浏览(22)
  • Unity实现摄像机向屏幕中间发射射线射击物体

    外部找个PNG透明图,拖到Unity文件夹,右上角改成精灵sprite2d 2.添加到UI画布   3.写脚本 首先,我们需要引入一些 \\\"工具\\\",就像我们在玩游戏时要先下载游戏客户端一样。这里的 \\\"工具\\\" 就是一些命名空间,让我们可以方便地使用 System 和 UnityEngine 类。 🔧 接下来,我们创建了

    2024年02月08日
    浏览(26)
  • UE获取当前鼠标点击位置坐标

    获取当前 鼠标点击位置的UE世界坐标 (x,y,z),效果如下图所示(为便于演示,下图显示了碰撞点位)。 2.1 蓝图代码 (1) 核心函数 的蓝图代码如下: (2)当鼠标左键按下时,调用函数,当前鼠标点击位置将会被打印在屏幕上。

    2024年02月09日
    浏览(47)
  • C++ 鼠标点击的获取

    首先一个比较常用的宏定义如下: 使用KEY_DOWN(鼠标事件),可以方便获取很多鼠标的事件。 如果获取左键的点击,可以使用如下的代码:KEY_DOWN(MOUSE_MOVED) 如果获取滚轮的点击,可以使用如下的代码:KEY_DOWN(MOUSE_WHEELED) 如果获取右键的点击,可以使用如下的代码:KEY_DOWN(MOUSE

    2024年02月12日
    浏览(33)
  • C++实现【获取鼠标位置】以及控制鼠标【打开窗口并点击】

    获取鼠标位置的函数源代码来自:C++【认知系列】实时获取鼠标坐标_c++ 获取鼠标坐标_Zalamp的博客-CSDN博客 鼠标点击操作代码来自: C++控制鼠标移动到指定位置并且左键点击_c++鼠标移动_蜚语77的博客-CSDN博客 在特定程序中实现鼠标点击操作分为两步,第一步就是在任务栏点

    2024年02月12日
    浏览(32)
  • Three 之 three.js (webgl)鼠标/手指通过射线移动物体的简单整理封装

    目录 Three 之 three.js (webgl)鼠标/手指通过射线移动物体的简单整理封装 一、简单介绍 二、实现原理 三、注意事项 四、效果预览 五、案例实现步骤 六、关键代码 Three js 开发的一些知识整理,方便后期遇到类似的问题,能够及时查阅使用。 本节介绍, three.js (webgl) 中,

    2024年02月16日
    浏览(32)
  • UE5 物体高速移动产生拖影(运动残影)

    给一个物体加上一个location的变化,当这个值达到一定大小时,运动会产生残影 速度较小时则不会,或者说不那么明显 这个是因为UE5的抗锯齿采样方法方法改成了 TSR- Temporal Super Resolution 该方法主要是将低分辨率游戏画面扩展至高分辨率,类似英伟达的DLSS,减轻显卡压力从而

    2024年02月11日
    浏览(63)
  • Unity-Pico高级开发(一)按键状态获取,射线碰到物体变色,射线末端小圆点

    目录 效果展示 前言 获取按键状态 射线碰到物体变色 射线末端小圆点 Unity-Pico高级开发(一)按键状态获取,射线碰到物体     picoXR为Unity提供的Unity XR SDK是基于Unity XR实现的各个功能,针对手柄和头盔的各个按键摇杆事件的获取,均是采用的Unity XR提供的方法。目前UnityXR只

    2024年04月28日
    浏览(52)
  • [UE5]物体沿指定路径(样条线)循环往复的移动

    UE5.0.3 B站:https://www.bilibili.com/video/BV17K411B7DL/ YouTube: B站:https://www.bilibili.com/video/BV1PV4y1F7F2/ YouTube: GitHub:https://github.com/wjswxc/SplineDemo 中文: 英文: Shape_NarrowCapsule 添加样条组件 编辑样条线 在蓝图中添加如下代码 中文: 英文:

    2024年02月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包