虚幻引擎 Make Vector / Break Vector 节点

在蓝图里处理向量时,Make Vector(合成)和 Break Vector(拆分)就像一把“瑞士军刀”,当你需要读取或修改向量的某个坐标分量时,就离不开它们。

图片[1]_虚幻引擎 Make Vector / Break Vector 节点_虚幻引擎

💡 什么是 Vector,以及为什么要用它?

在 UE5 的 3D 世界里,一个 Vector 由 (X, Y, Z) 三个浮点数分量构成,简洁地描述了我们需要的各种信息。它主要有三种用途:

  • 位置 (Location):(X, Y, Z) 代表物体在3D世界中的坐标。

  • 方向 (Direction):向量也能表示方向,比如角色移动的方向。

  • 速度/缩放 (Velocity / Scale):用于表示速度或大小,向量加法就是速度的叠加。

正是因为 Vector 简单又强大,所以 Make Vector 和 Break Vector 才如此重要。Make Vector 用于将三个独立的数值“打包”成一个向量,而 Break Vector 则是从一个完整向量中提取出它的 X、Y、Z 数值。


🛠️ 案例:随机移动的弹跳球 (平台跳跃游戏)

我们将创建一个会在地面上随机弹跳的小球,这个案例能很好地展示这两个节点的核心用法。

1. 创建蓝图类

  • 在 内容浏览器 (Content Browser) 中,右键点击空白区域,选择 蓝图类 (Blueprint Class) -> Actor。

  • 命名为 BP_BouncingBall,双击打开编辑器。

2. 添加视觉组件

  • 添加一个 静态网格体 (Static Mesh) 组件。

  • 点击“静态网格体”右侧的“无”下拉菜单,选择 Shape_Sphere。

  • 同样地,添加一个 球形碰撞 (Sphere Collision) 组件,并调整它的大小,使其稍微比球体大一圈即可。

3. 创建逻辑变量

  • 变量名: Move Direction,类型: Vector。

  • 变量名: Move Speed,类型: Float,默认值: 500.0。

  • 变量名: Bounce Z,类型: Float,默认值: 100.0。

记得在细节面板中,把 Move Direction 和 Move Speed 的 Instance Editable 勾选上,方便在场景中调试。

4. 核心逻辑实现 (事件图)

在 BP_BouncingBall 的事件图表中,按以下方式连接节点:

🎉 播放时随机初始化

  1. 从 Event BeginPlay 节点引出白色执行线。

  2. 拖出 Random Float in Range (From 0 to 360),得到 RandYawAngle。

  3. 新建 Make Vector 节点,将 X 设为 cos(RandYawAngle),Y 设为 sin(RandYawAngle),Z 设为 0。

  4. 将这个向量 归一化 (Normalize),然后 设置 (Set) 给 Move Direction 变量。

    节点速览:这段逻辑会用你的随机角度算出一个2D方向(例如:右前方),并保存为移动方向。

⚡ 持续更新位置

  1. 从 Event Tick 节点引出白色执行线。

  2. 获取 Move Direction 和 Move Speed 变量。

  3. 将它们 相乘 (Multiply),得到当前帧的位移增量 Delta Movement。

  4. 然后连接到 Add Actor World Offset 节点(步长类型选 World)。

🪄 边界反弹 (重点案例逻辑)

  1. 使用 序列 (Sequence) 节点,从 Event Tick 分支出一条新线。

  2. 获取 Move Direction,连接到 Break Vector 节点,得到 Old X, Old Y, Old Z。

  3. 同时创建 Get Actor Location 节点,连到另一个 Break Vector 节点,获得 Loc X, Loc Y 等。

  4. 判断边界条件 (用“>” 和 “<” 节点):

    • Loc X > 1800 (或你的区域边界),则新 X = -Old X。

    • Loc Y > 1800,则新 Y = -Old Y。

  5. 接缝处弹跳逻辑:

    • 如果 Loc Z <= 100.0 (刚落到地面),新 Z = Bounce Z (注意是正值,向上)。

  6. 新建一个 Make Vector 节点,把可能改变后的 X, Y, Z 值重新打包成一个新向量。

  7. 最后,将这个新向量 设置 (Set) 给 Move Direction 变量,就完成了方向的改变。

节点速览:当你需要单独修改一个向量的某一部分时(比如在碰撞后将X分量取反),Break Vector 和 Make Vector 的配合就是最清晰、最直接的方案。

💎 案例总结

通过这个弹跳球案例,我们可以清晰地看到这两个节点的分工与协作,也正是它们在UE5蓝图开发中的核心价值:

  • Break Vector (拆分):当你需要读取或修改一个向量的某个特定部分(比如只获取Z轴高度,或反转X轴方向)时,使用它来提取分量。

  • Make Vector (合成):当你修改了分量,需要将其重新“打包” 送回给需要它的地方时,使用它来合成新向量。

⚡️ 更高效的方式

除了使用这两个节点,UE5还提供了一个更快捷和直观的方法,特别适合简单的单独修改:

  • 右键拆解:在引出一个向量引脚后,直接右键选择 Split Struct Pin(拆分结构体引脚),它会直接在节点上分解出 X, Y, Z。

  • 一键重组:完成修改后,在其中一个分量引脚上右键,选择 Recombine Struct Pin(重组结构体引脚),分量会立刻变回原本的向量。

  • 适用场景:这个方法非常适合在单个节点上快速连接分量,省去了额外添加 Break / Make 节点的步骤,让蓝图看起来更简洁。

感谢您的来访,获取更多精彩文章请收藏本站。

THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容