banner
YZ

周周的Wiki

种一棵树最好的时间是十年前,其次是现在。
zhihu
github
csdn

UE5蓝图实战:动态墙上挖坑与自定义坑尺寸

在 Unreal Engine 5.3 中,我利用蓝图系统开发了一个创新的挖坑 Demo,该 Demo 展示了如何在实时环境中动态地在墙体上挖坑,并允许用户自定义坑的大小。这一过程得益于 UE5 官方提供的 Geometry Script 插件,该插件通过蓝图接口实现了强大的网格布尔算法功能。文章中,我将详细介绍如何在运行时动态地进行挖坑操作。此外,我还将展示如何通过蓝图接口调整坑的尺寸,为游戏世界中的互动元素添加更多可能性。无论是对于建筑模拟、地形编辑还是其他需要动态网格修改的应用场景,本文提供的方法都将大有裨益。

准备工作#

启用插件 Geometry Script#

在 UE5.0 之后的版本,如 UE5.3 中,在编辑栏 -- 插件 -- 搜索栏输入Geometry Script 打钩启用并重启 UE。
image.png

导入 RuntimeGizmo 插件#

这是一款可以在运行时控制对象移动旋转缩放的工具
image.png
可以从 UE 商店里购买,或者在网上找一些免费资源。将插件解压后的父级目录复制到 UE 项目工程中的 Content 文件夹下。

制作挖坑蓝图类 Actor#

在此之前确保 Geometry Script 插件启用成功。在内容菜单里右键创建蓝图类,在弹出的选取父类窗口中间的搜索栏搜索并选择DynamicMeshActor,命名为 BP_DigHole
image.png

蓝图节点连连看#

实现挖坑函数#

  1. 定义变量和函数

双击打开 BP_DigHole 蓝图,在我的蓝图 -- 函数栏点击 + 号添加一个函数,命名为 GenerateHole,在变量栏分别添加 Dimension(Vector),Size(Vector),DynamicMesh(DynamicMesh),DragSphere(Actor)这个四个变量。
image.png

  1. 完善函数

按照下图连接蓝图节点:
image.png
image.png

接入 Gizmo 工具#

  1. 在 Gizmo 蓝图里添加事件分发器

在此之前确保 RuntimeGizmo 插件导入成功。
双击打开 BP_Gizmo 蓝图,添加一个事件分发器命名为 OnGizmoChanged,并找到Process Interaction函数,在其执行修改坐标轴位置之后的逻辑下连接以下节点:
image.png

  1. 在控制器中启用 Gizmo
    在任意一个在场景中激活的 Pawn 类(如 BP_CamController)中,按下图蓝图连接节点:

image.png

在这个蓝图中,显示定义了一个 BP_Gizmo 的变量 GizmoRef,使用 Event BeginPlay 节点绑定 BP_Gizmo 的事件分发器 OnGizmoChanged 用于触发挖坑函数 GenerateHole,后面是将鼠标光标显示到 Game 视图中。

Left Mouse Button 是一个鼠标左键点击事件,用于触发 Attach Gizmo 函数以激活场景中的 Gizmo 小组件,在鼠标左键点击 Actor 对象时显示。

场景 Actor 参数设置#

放置一个球体到场景中,命名为 DragSphere,在内容菜单中找到 BP_DigHole 和 BP_Gizmo,将它们拖拽至场景中,其中需要给 BP_DigHole 的变量 Dimension、Size、DragSphere 赋值如下:
image.png

运行效果#

hole

需要修改墙体网格大小可以添加函数修改 Dimension 变量,修改坑的大小可以修改 Size 变量,置于坑的深度可以通过设置坑在父级网格体下的 Z 坐标实现。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。