返回 导航

UE5

hangge.com

UE5 - 计算相对于某物体前后左右上下等方向一段距离的位置

作者:hangge | 2025-08-30 10:03
    我们可以通过一些基本计算得出一个物体向前、向右、向上和向斜上方等方向运动一段距离后的位置,这种计算在后面的三维空间中比较常用。本我将通过两个样例进行演示。

1,准备工作

(1)由于开始计算时不知道场景中的物体的正方向在哪里,因此可以新建一个“Actor” 类蓝图,使用“Arrow”组件来确定正方向。

(2)在“内容浏览器”面板中单击鼠标右键,执行“蓝图类”菜单命令,创建一个“Actor”类蓝图并命名为“VectorCalculation

(3)双击打开蓝图,单击“组件”面板中的“添加”按钮,搜索“箭头”后添加“箭头组件
提示:生成的默认方向即 Actor 的正方向,单击箭头后在“细节”面板中能够看到默认的“旋转”值为(X:0.0°,Y:0.0°,Z:0.0°)

(4)打开“细节”面板中的“渲染”卷展栏,取消勾选“游戏中隐藏”选项。编译并保存后关闭“蓝图编辑器”窗口。

(5)将“VectorCalculation”蓝图拖曳到关卡中便可看到箭头朝向。

2,计算某物体原点右侧某个点的位置

(1)打开关卡蓝图窗口,执行如下操作:
  • 将“大纲”面板中的“VectorCalculation” 拖曳到“关卡蓝图”窗口的“事件图表”面板中。
  • 因为要计算的是某个位置右侧某个距离的另一个位置,所以在开始计算时需要获取初始位置。创建一个“获取 Actor 位置”节点并连接“VectorCalculation”节点。
  • 默认情况下可以使用“获取 Actor 向右向量”节点得到 Actor 向右的位置,这时可以直接将引用的“VectorCalculation”作为“获取 Actor 向右向量”的目标。
  • 将向量乘以一个浮点数或整数便可延长移动的距离且不改变方向(乘以负数则会变成相反的向量)。假设要将距商延长 200 倍,可直接将向右向量 * 200(浮点数和整数都可以)。
  • 得到的结果一定要和原来的位置相加,才可以得到以原来位置为基础向某个方向移动一定距离后的位置。
  • 最后得到的向量结果就是“VectorCaculation”向右移动 200 个单位后的位置。创建一个“绘制调试球体”节点,将“Center”引脚连接到“”节点的输出引引脚上并设置“Duration”参数,将“事件开始运行”节点连接到“绘制调试球体”节点上。

(2)编译并保存后,运行程序可以看到球体在箭头右侧 200 个单位处生成。

3,计算某物体原点上方某个点的位置

(1)与上面样例类似,我们只需要将“获取 Actor 向右向量”节点替换成“获取 Actor 向上向量”节点便可得到原点上方的某个点的位置。同时这次稍加改进,使用“绘制调试线条”节点,在 Actor 所在位置与计算结果之间生成一个存在时长为 1000、厚度为 2 的黑色线段。

(2)运行效果如下:
评论

全部评论(0)

回到顶部