当前位置: 首页 > news >正文

UE5.2 SmartObject使用实践

SmartObject是UE5新出的一项针对AI的功能,可为开发者提供如公园长椅、货摊等交互对象的统一外观封装,如UE的CitySample(黑客帝国Demo)中就运用到了SmartObject。

但SmartObject实践起来较为繁琐,主要依赖于AI及行为树,并且在UE5.3中这个模块更换了Claim接口,使其无法在纯蓝图配置中跑起来,因此本文将用一个简化的案例并配合UE5.2版本演示该模块使用。

1.SmartObject配置

(1)首先打开插件SmartObject、GameplayBehaviorSmartObjects:
在这里插入图片描述
(2)右键可创建SmartObjects的定义:
在这里插入图片描述
(3)添加一个Slot并设置Behavior Definitions:
在这里插入图片描述
这个设置类似于给公园长椅设定座位位置,该位置可以是大概位置,因为具体逻辑可以在触发时进行处理。
Behavior Definitions的参数必须填写,目前是强绑定关系。

(4)新建空Actor蓝图,添加SmartObject组件并设置刚刚配置的资产。
在这里插入图片描述

(5)将该Actor放置于场景任意位置。
在这里插入图片描述

2.AI配置

接下来需要配置一个简单的AI角色,以触发SmartObject。

AI角色以及行为树的创建请看这篇文章:
https://blog.csdn.net/grayrail/article/details/130389966

(1)配置好后,创建如下3个对象,其中行为树可以先不急着创建具体节点:
在这里插入图片描述

(2)打开行为树,创建一个AI Task用于处理SmartObject的查找和触发:
在这里插入图片描述

(3)重写节点Receive Execute AI,编写AI Task执行逻辑:
在这里插入图片描述
上述逻辑通过节点Find Smart Objects查找场景中2000左右范围的SmartObjects对象,并返回为数组。

(4)继续编写Branch右侧逻辑:
在这里插入图片描述
这里通过关键节点Claim预定该SmartObject的使用,防止别的使用者也查找到该SmartObject。通过Claim Handle可以拿到该Slot进行下一步处理,例如这里就将AI位置设置给了Slot。

网上教程用节点Use Claimed Gameplay Behavior Smart Object比较多,该节点可以调用AI移动至目标点,然后触发Behavior,但需要布置寻路网格比较麻烦,因此这里直接设置位置表示触发完成。

(5)最后,使用完Claim Handle后,调用Release接口,释放占用:
在这里插入图片描述

http://www.lryc.cn/news/317346.html

相关文章:

  • 奇舞周刊第521期:实现vue3响应式系统核心-MVP 模型
  • Mybatis-plus手写SQL如何使用条件构造器和分页
  • Vue的table组件合并行方法
  • 5. C语言字符串处理常用方法
  • ts--(入门到离职系列)
  • java后端常见问题
  • windows系统玩游戏找不到d3dx9_43.dll缺失,无法启动此程序的解决方法
  • MATLAB中mapminmax函数用法
  • 数据结构导航 -- 38篇
  • 前端性能优化 | CDN缓存
  • 【C#语言入门】17. 事件详解(上)
  • Charles无法打开导出的har文件解决方法
  • FFmpeg--FlvPaser源码:解析.flv输出.h264
  • 【项目笔记】java微服务:黑马头条(day02)
  • 每天五分钟计算机视觉:图像数据不足带来的问题和解决办法
  • 手机App防沉迷系统C卷(JavaPythonC++Node.jsC语言)
  • 【WEEK2】学习目标及总结【SpringMVC】【中文版】
  • Git版本工具学习
  • baidu, google和chatgpt -- 翻译对比
  • 高分辨率全球海洋温度和盐度再分析数据Global Ocean Physics Reanalysis(0.083°),并利用matlab读取绘图
  • 微信小程序修改placeholder样式
  • 爬虫案例1
  • 修改表结构
  • Rust 语言中的 into() 方法
  • MinIO权限提升漏洞CVE-2024-24747详细解决办法
  • “我快无聊死了”用英语怎么说?柯桥英语口语学习,成人零基础学外语
  • JS ATM练习案例(复习循环知识)
  • Android 二维码相关(一)
  • 利用tree命令自动保存文件层级结构
  • C++初阶:内存管理