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

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

UE5蓝图挖洞

准备工作

启用插件Geometry Script

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

导入RuntimeGizmo插件

这是一款可以在运行时控制对象移动旋转缩放的工具

可以从UE商店里购买,或者在网上找一些免费资源。将插件解压后的父级目录复制到UE项目工程中的Content文件夹下。

制作挖坑蓝图类Actor

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

蓝图节点连连看

实现挖坑函数

  1. 定义变量和函数

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

  1. 完善函数

按照下图连接蓝图节点:

接入Gizmo工具

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

在此之前确保RuntimeGizmo插件导入成功。

双击打开BP_Gizmo蓝图,添加一个事件分发器命名为OnGizmoChanged,并找到Process Interaction 函数,在其执行修改坐标轴位置之后的逻辑下连接以下节点:

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

在这个蓝图中,显示定义了一个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赋值如下:

运行效果


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

相关推荐
zhangzhangkeji9 小时前
UE5 C++(14-1):UPROPERTY 宏、属性说明符和元数据说明符, visible,edit,Blueprint读写,Category 存储目录
ue5
Zhichao_9714 小时前
【UE5.3 C++】ARPG游戏 05-准备角色攻击的武器和动画
游戏·ue5
zhangzhangkeji18 小时前
UE5 C++(15-3):UFUNCTION 的 meta 元数据, DisplayName ,同 UPROPERTY 的 meta
ue5
夜色。21 小时前
UE5 Error LNK2019 编译异常修复备忘
ue5
陈友松2 天前
UE5 表格文件动态导入导出插件
ue5
zhangzhangkeji2 天前
UE5 C++(17):结构体,USTRUCT(BlueprintType) struct FmyStruct ,必须用 F 开头
ue5
碎梦人2 天前
基于UE5开发的pico大空间项目开发之虚拟坐标系与真实坐标系的对应关系
ue5·lbe·大空间坐标系对应关系
zhangzhangkeji2 天前
UE5 C++(16):枚举 UENUM,UENUM(BlueprintType) 使其成为蓝图里的类型。模板类 TEnumAsByte<enum 类型>
ue5
zhangzhangkeji2 天前
UE5 C++(UObject 的实例化 19-2):UObject 类的继承关系
ue5
妙为3 天前
Unreal Engine5报错:Expected WarriorDebugHelper.h to be first header included.
ue5·虚幻·编译错误