58. UE5 RPG AI行为树的装饰器

2024-05-23 21:36
文章标签 ai 行为 装饰 58 ue5 rpg

本文主要是介绍58. UE5 RPG AI行为树的装饰器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

书接56. UE5 RPG 给敌人添加AI实现跟随玩家,我们实现了AI一些基础设置,并实现了获取敌人附近的玩家实现了跟随功能
在这里插入图片描述
接下来,我们将实现区分职业,并根据职业不同设置不同的攻击距离,并且根据职业实现不同的技能施放。

黑板装饰器

首先,我们在发现玩家下面添加一个Selector
在这里插入图片描述
这个Selector上面右键添加装饰器,装饰器可以理解为用于增加条件判断当前节点是否会设置为失败,如果失败了,节点下面的子项也将停止执行,运行其它分支逻辑,或者从头开始重新执行行为树。
在这里插入图片描述
我们在节点上增加一个黑板装饰器,这个装饰器可以监听黑板上的值来执行逻辑
在这里插入图片描述
如果装饰器这一关判断通过不来,这个节点将直接被定义为失败,节点下的行为将不被调用执行
在这里插入图片描述
在右侧属性这里,有个黑板属性,可以监听一个黑板键,键查询这里是可以通过的条件
在这里插入图片描述
这里如果是已设置,那么如果黑板键被设置了值才能够运行节点下面的节点,相反,如果设置的未设置,在这个黑板键被设置值以后,是无法执行此节点下面的后续节点。
在这里插入图片描述
接下来是流控制这里的通知观察者,这个值的设置用于在值在如何改变时,观察者会中止某些流程。观察者相当于整个行为树的流程控制者,用于控制行为树如何运行。
这两个值的设置有什么区别呢?经过测试发现

  • 值改变时,观察者将在黑板的键的值改变时通知观察者
  • 结果改变时,是在装饰器所在的节点结果发生变化(从成功变为失败,从失败变为成功)时通知观察者
    在这里插入图片描述
    上面讲到了观察者中止,那么如何中止呢,我们可以通过配置观察器中止来实现,下面并列出来每个可以设置的值。
    在这里插入图片描述
    这四个值将会设置需要在中止时中止那些运行的行为:
  • None 是不会中止
  • Self:如果设置了Self,观察者将会中止掉此行为节点的所有正在运行的行为,并将自身返回失败。
  • Low Priority:如果通知中断,中断所有低优先级的执行中节点。在行为树中,节点通常具有优先级或执行顺序,这种类型的中断将影响所有优先级低于触发中断的节点的执行中节点。
    在下图中,我们可以看到行为树的执行顺序,低优先级,就是比它的数值大的那些行为节点。
    在这里插入图片描述
  • Both: 如果通知中断,中断所有低优先级的执行中节点,包括当前子树中的节点。这实际上是“Self”和“Low Priority”的结合,既中断当前子树中的节点,也中断其他所有低优先级的节点。

这也是我们为什么不把装饰器放到前面的那个行为节点上的原因,你看执行顺序就会发现,装饰器的执行优先级比Selector要高,如果和发现最近玩家设置到一块,那么如果装饰器不通过,AI就无法运行查找最近玩家的服务。
在这里插入图片描述

增加角色状态的判断

我们要执行移动或者攻击时,还要判断当前角色是否处于受击状态,所以,我们在黑板里增加一个布尔键,用于设置当前是否处于受击状态
在这里插入图片描述
然后,我们在敌人基类里面,对其值进行初始化,从AIController里面获取到黑板控件,然后调用函数设置即可。
在这里插入图片描述
接下来就是设置它的动态值,我们之前实现了受击时将敌人的速度设置为0,刚好在那里,我们还是使用同样的方法设置其受击布尔值

void AEnemyBase::HitReactTagChanged(const FGameplayTag CallbackTag, int32 NewCount)
{bHitReacting = NewCount > 0;GetCharacterMovement()->MaxWalkSpeed = bHitReacting ? 0.f : BaseWalkSpeed;//设置黑板键的值RPGAIController->GetBlackboardComponent()->SetValueAsBool(FName("HitReacting"), bHitReacting);
}

我们可以在节点上面增加多个装饰器,所以,我们再增加一个判断当前是否处于受击状态的黑板键
在这里插入图片描述
这个黑板键监听当前角色是否处于受击状态,由于使用的是布尔值,通知观察者这里值和结果改变效果是一样的,在通知观察者中止行为是,我们选择中止自身下面的子行为节点。
在这里插入图片描述
然后,我们在它下面创建三个子行为节点,用于不同的需求
在这里插入图片描述

实现根据职业切换行为节点

由于不同的职业的攻击距离不同,所以,我们这里将区分了远程攻击和近战攻击。如果攻击距离不够时,我们还可以切换到向目标移动行为节点,来实现对目标的移动。
所以,我们再增加一个黑板键,用于记录当前的角色是近战攻击还是远程攻击
我们增加一个RangedAttacker的布尔键,如果角色是近战攻击,我们将其设置为false,如果是法师或者游侠职业,我们将其设置为true。
在这里插入图片描述
接着在敌人基类PossessedBy函数中,设置它的值。
在这里插入图片描述
接下来,我们在下面创建三个Sequence,Sequence不同于Selector,它会执行所有的子行为,在有一个子行为失败时返回失败。
在这里插入图片描述
我们在远程攻击行为节点上增加一个装饰器
在这里插入图片描述
这个装饰器用于判断当前角色是否为远程攻击者,如果是在战士身上执行此ai行为树,这里将直接返回false,不会运行后续的子行为
我们只需要在设置这里对RangedAttacker的键检查是否已设置即可。
在这里插入图片描述
接着增加一个修饰器,判断攻击范围,并修改一下节点名称,方便我们查看
在这里插入图片描述

然后我们在近战攻击这里增加一个黑板装饰器,用于判断是否达到的近战的攻击距离
在这里插入图片描述
这里选择查看黑板键(与目标的距离),如果小于等于500cm,则能够执行子行为,否则,将执行后续同级别行为。
在这里插入图片描述
最后,我们在移动行为节点中,设置一个随机等待时间和使用一个移动节点,移动目标就是需要攻击的目标
在这里插入图片描述
接着我们在行为节点上加上修饰器,用来限制它的子行为可以运行的范围。
在这里插入图片描述

这篇关于58. UE5 RPG AI行为树的装饰器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/996477

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/

【北交大信息所AI-Max2】使用方法

BJTU信息所集群AI_MAX2使用方法 使用的前提是预约到相应的算力卡,拥有登录权限的账号密码,一般为导师组共用一个。 有浏览器、ssh工具就可以。 1.新建集群Terminal 浏览器登陆10.126.62.75 (如果是1集群把75改成66) 交互式开发 执行器选Terminal 密码随便设一个(需记住) 工作空间:私有数据、全部文件 加速器选GeForce_RTX_2080_Ti

AI Toolkit + H100 GPU,一小时内微调最新热门文生图模型 FLUX

上个月,FLUX 席卷了互联网,这并非没有原因。他们声称优于 DALLE 3、Ideogram 和 Stable Diffusion 3 等模型,而这一点已被证明是有依据的。随着越来越多的流行图像生成工具(如 Stable Diffusion Web UI Forge 和 ComyUI)开始支持这些模型,FLUX 在 Stable Diffusion 领域的扩展将会持续下去。 自 FLU

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG