UE5 - 实现鼠标点击地面控制角色移动教程(俯视角游戏操作方式)
作者:hangge | 2026-01-26 09:01
在许多俯视角游戏中(类似《暗黑破坏神》或《英雄联盟》),通过鼠标点击地面即可控制角色移动,既直观又易于上手。本文通过样例演示如何通过鼠标点击检测配合 AI Move To 节点或者 Simple Move to Location 节点,轻松实现角色的点击移动功能。















1,创建 AI 控制器
(1)新建一个蓝图,在“选取父类”对话框中选择“AIController(AI 控制器)”,单击“选择”按钮,这样就可以类通过继承“AIController”创建一个子对类,将其命名为“BP_AIController”

(2)打开“BP_AIController” 控制器,添加如下逻辑:
- 当玩家按下鼠标左键时,先通过 Get Player Controller 获取当前控制器,再用 Get Hit Result Under Cursor by Channel 从鼠标指针向世界发射可视性射线并取得击中结果。
- 拆解出击中点位置后,用一个分支判断射线是否真正碰撞到地面(Blocking Hit),如果为真,就调用 Simple Move to Location 命令,驱动该控制器管理的角色沿导航网格移动到射线击中的世界坐标。

(3)当然,我们要让光标显示出来,并且获取控制器才能响应鼠标点击事件。

2,创建 AI 角色蓝图
(1)因为这里需要为人物模型添加一个人形 AI 所以新建一个“角色”类蓝图并命名为“AI”。这个“角色”类蓝图就可以作为 AI。
提示:如果只需要制作一个人形 AI,那么“角色”类蓝图是最好的选择。如果要制作非人形 AI,那么“Pawn”类蓝图是最好的选择。
(2)双击打开“AI”蓝图后在“组件”面板中选择“网格体(CharacterMesh0)”,在“细节”面板中设置“骨骼网格体"为“SK_Mannequin”。

(3)修改网格体组件的“变换”参数,设置“位置”为(X:0.0,Y:0.0,Z:-88.0),“旋转”为(X:0.0°,Y:0.0°,Z:-90.0°),使得角色朝向蓝色箭头所指的方向。

(4)在“细节”面板中设置“动画类”为之前下载的资源包里的“ThirdPerson_AnimBP”

(5)选择“AI(自我)”组件后在“细节”面板中设置“AI 控制器类”为“BP_AIController”。让“角色”类蓝图默认的控制器为新建的控制器,这样就可以在控制器中运行行为树。完成后编译并保存蓝图。

3,创建导航网格
(1)进入关卡,在“放置 Actor”面板中放置一个“NavMeshBoundsVolume”区域,该区域可以让 AI 在导航系统中实现移动、寻路和计算等功能。按 P 键可以观察该区域的影响范围。设置该区域的“缩放”参数,使其影响范围变得更大。

(2)拖曳“AI”蓝图到区域中。

(3)接着在添加一些立方体到关卡中作为障碍物。

4,运行测试
(1)进入 SIE 运行模式,当我们点击地面时,角色便会自动寻路到该目标位置。

(2)并且中途如果遇到障碍物时,角色也会自动绕过障碍物到达目标位置。

附一:实现角色跟随鼠标效果
(1)上面样例只有在每次点击后才然角色朝向点击的位置移动,我们可以对其做个改进,当鼠标长按时,角色会一直跟随着鼠标移动。要实现该效果,我们只需要改为在 Tick 事件中判断鼠标是否按下,是的话获取鼠标位置对应的地面位置,然后使用 Simple Move to Location 驱动角色移动即可。

(2)进入 SIE 运行模式,当我按住鼠标左键不放时,角色就是一直跟随鼠标所在的位置移动。

附二:摄像机俯视跟随
(1)上面的样例中我们仍然可以通过键盘和鼠标控制摄像头位置和角度。但在实际游戏中,摄像机应该是一直俯视跟随角色的,角色始终处于屏幕的中央。

(2)要实现该效果,我们需要打开 AI 角色蓝图“AI”,添加一个“弹簧臂组件”和一个“摄像机组件”

(3)选中“弹簧臂组件”,修改其“细节”面板中的相关配置:
- 设置“目标臂长度”为 1000,“旋转”为(0.0,-50.0,0.0),将摄像机位置调高并朝下俯视。
- “使用 Pawn 控制旋转”取消勾选,这样臂不随角色控制旋转。
- “继承 Pitch / Yaw / Roll”全部取消勾选,确保臂在世界空间中锁定旋转。

(4)最后打开关卡蓝图,使用“Set View Target with Blend”节点将视角切换到这个角色蓝图上即可。

全部评论(0)