Find Look at Rotation 是一个很实用的蓝图节点,用于让一个角色或物体(比如AI敌人)的面部始终朝向某个目标(比如玩家)。它的原理是:给定 起始点 (Start) 和 目标点 (Target) 在世界空间中的坐标,为你计算出一个能让对象“看向”目标点的世界旋转值 (Rotator)。
下面会先介绍节点的具体输入输出,再通过几个递进的案例为你演示具体用法。
📖 节点详解 (Input & Output)
使用时,你需要为这个节点提供两个输入,它将输出一个旋转值。
-
Inputs
-
Start (Vector): 准备旋转的物体(“观察者”)的世界坐标,通常源自其父对象的
Get World Location节点。 -
Target (Vector): 要注视的目标(“被观察者”)的世界坐标,同样来自目标对象的
Get World Location节点。
-
-
Outputs
-
Return Value (Rotator): 一个
Rotator(由 Pitch, Yaw, Roll 组成的旋转值)。它代表从起始点到目标点所需的绝对世界旋转量。
如果只需要在水平方向旋转,可以配合
Break Rotator和Make Rotator节点,提取 Yaw 值并将 Pitch 和 Roll 设为 0。 -
📝 完整案例实操
案例一:让立方体始终注视玩家(最基础)
这是理解该节点最直观的例子:创建一个立方体,并让它始终面向玩家。
-
准备场景:新建一个第三人称模板项目。在场景中放置一个 Cube,在细节面板将其 Mobility 设为 Movable。
-
添加蓝图:选中 Cube,点击“蓝图/添加脚本”,命名为
BP_LookAtTarget。 -
编写逻辑:打开
BP_LookAtTarget的事件图表,按以下方式连接节点:-
Tick 事件: 先从
Event Tick节点拖出执行线。 -
获取目标位置: 拖出
Get Player Pawn(获取角色)→Get Actor Location(获取角色世界位置),连接到Find Look At Rotation的 Target 输入。 -
获取自身位置: 自身位置通过
Get Actor Location获取,连接到 Start 输入。 -
应用旋转:
Find Look At Rotation的输出连接到Set Actor Rotation的 New Rotation 输入,其目标为Self。
-
-
测试结果:编译保存后,运行游戏,你会发现 Cube 的正面会一直跟随角色旋转。
案例二:平滑注视效果(进阶体验)
直接注视在角色移动时显得很僵硬。我们可以通过 RInterp To 节点来平滑过渡,这在游戏角色转向时非常实用。
在前一个案例的蓝图基础上做如下修改即可:
-
加入平滑逻辑:在
Find Look at Rotation和Set Actor Rotation之间加入RInterp To节点。-
Current: 连接
Get Actor Rotation的返回值,获取当前帧的物体旋转角度。 -
Target: 连接
Find Look at Rotation的计算结果。 -
Delta Time: 连接从
Event Tick引出的相同名称的引脚。 -
Interp Speed: 使用
Float常量,设置一个值(如 5-10),值越小,转向越平滑。
-
-
完成连接:最后,将
RInterp To的输出连接到Set Actor Rotation的 New Rotation 输入。
现在运行,立方体将会以一个平滑的速度缓慢转向玩家,而不是“瞬间回头”。
案例三:C++中的实现
在C++代码中,可以通过 UKismetMathLibrary::FindLookAtRotation 来实现同样的功能。以下是关键代码片段:
#include "Kismet/KismetMathLibrary.h" void AMyActor::LookAtTarget(AActor* TargetActor) { if (TargetActor) { // 计算需要旋转的角度 FRotator LookAtRotation = UKismetMathLibrary::FindLookAtRotation( GetActorLocation(), TargetActor->GetActorLocation() ); // 应用旋转 SetActorRotation(LookAtRotation); } }
这段代码的逻辑和蓝图完全一致,通过 FindLookAtRotation 计算出指向目标的方向,再用 SetActorRotation 应用到物体上。
💡 可能遇到的问题与解决思路
-
物体不旋转?
-
检查 Mobility:放置为静态或固定属性的 Actor 无法被旋转,请务必在细节面板中将 Mobility 设置为 Movable。
-
检查连接:需确保
Set Actor Rotation的 New Rotation 输入被正确连接。
-
-
只绕 Z 轴旋转 (仅水平转向)
-
目的:常用于需要保持垂直方向的角色或炮塔。
-
解决方法:在应用旋转前,先将
Find Look At Rotation的结果Break Rotator,然后Make Rotator,将 Pitch 和 Roll 置为 0,只保留 Yaw 值即可。
-
-
与动画蓝图的联动
-
目的:让角色的上半身或头部独立旋转,而下半身保持移动方向。
-
核心思路:结合
Two Bone IK或Look At节点(位于动画蓝图中)。注意:Find Look At Rotation通常用于设置Actor或Component的世界旋转,而角色头部的单独旋转更适合在动画蓝图内部处理,使用专门的Look At节点。
-
感谢您的来访,获取更多精彩文章请收藏本站。







暂无评论内容