返回 导航

UE5

hangge.com

UE5 - 获取鼠标点击的Actor对象和位置坐标(Get Hit Result Under Cursor)

作者:hangge | 2025-10-18 10:30
    在编辑器与游戏中,使用鼠标指向并点击场景中的物体是非常常见的交互(选择、拾取、显示信息等)。Get Hit Result Under Cursor by ChannelGet Hit Result Under Cursor for ObjectsPlayer Controller 提供的两个方便节点:它把当前鼠标在屏幕上的位置投射到世界中,做一次射线检测(raycast),并返回 Hit Result。下面通过样例进行演示。

一、Get Hit Result Under Cursor by Channel 节点使用

1,功能说明

(1)该节点是把鼠标光标在屏幕上的位置转为一条从摄像机发射到世界的射线,并以指定的碰撞通道进行碰撞检测。常用于“点击选中物体”“鼠标射线拾取”“鼠标悬停显示信息”等。

(2)主要输出:
  • Return ValueBoolean):是否有命中(true/false)。
  • Hit Result(结构体)常用子项:
    • Hit Actor:被击中的 Actor
    • Hit Component:被击中的 Component
    • Location:命中的世界位置(点位于被击中物体表面)。
    • Impact Point / Impact Normal:撞击点/法线(与 Location 类似)。
    • Face IndexBone Name 等(骨骼网格/复杂信息)。

2,节点参数介绍

  • Trace Channel(碰撞通道):选择用哪个通道进行检测(常用 VisibilityCamera)。这个通道需要在目标对象的碰撞响应里设置为 Block 才能命中。
  • Trace Complex(是否复杂追踪):True = 使用网格三角面(更精确、开销更高);False = 使用简化碰撞(Collision)、速度更快。
提示:如果需要精确到模型表面细节,用 Trace Complex = True;为了性能优先用 False 并确保物体有合理的简化碰撞。

3,使用样例

(1)首先需要将鼠标光标显示出来,打开关卡蓝图添加如下节点逻辑:

(2)接着添加如下逻辑,当鼠标左键点击场景中物体时,在屏幕上打印被点击物体对象名称以及命中的世界位置。

(3)运行游戏,我们在地板任意两个位置点击后,有点击了一下立方体,可以看到屏幕左上角输出了相关信息。

二、Get Hit Result Under Cursor for Objects 节点使用

(1)Get Hit Result Under Cursor for Objects 节点使用与 Get Hit Result Under Cursor by Channel 类似,但其只返回被检测到且其“对象类型Object Type)”在我们指定列表内的第一个命中结果。

(2)这里我们对上面样例做个修改,使用 Get Hit Result Under Cursor for Objects 节点检测“静态场景”类型对象。

(3)运行游戏,可以看到使用鼠标左键点击立方体时屏幕会打印处相关信息,而点击地板没有任何反应(地板为动态场景)。
评论

全部评论(0)

回到顶部