您的位置:

UE4行为树的深度研究

一、UE4行为树太弱

Behavior Tree (行为树)是UnrealEnigne4(简称UE4)非常重要的一部分。它提供了一种直观且易于理解的方式来管理AI,是UE4引擎中最重要的AI系统之一。也正因为如此,很多人都会认为UE4行为树的表现太弱,无法应对复杂的AI逻辑,而需要通过复杂的CPP代码才能实现玩家期望的逻辑。例如,在动作游戏中,怪物AI往往需要跳、闪避、近战、远程攻击等能力,但是由行为树实现这些能力时则相对简单。

那么,如何弥补UE4行为树的不足呢?

二、UE4行为树Sequence

UE4的行为树内建有Sequence节点,它可以使多个子节点的行为按顺序执行。使用Sequence的好处在于可以充分利用行为树的自定义功能,同时又能够获得加强的流程控制,而不是把所有内容都编写在一个节点中。 比如,如果创建一个AI,使其在发现主角后进入警戒状态,然后开始向主角移动,最后攻击主角,使用Sequence节点能够优化行为树,分步骤控制AI的行动。

Action - Guard  (警戒)
    |
Action - MoveTo  (移动)
    |
Action - Attack  (攻击)

三、UE4行为树服务

UE4行为树提供了Service节点。Service节点可以在其它节点运行时执行,它可以用于更新黑板的数据、判断玩家离AI的距离、检查某个时间是否已经到达或监控其它节点。比如,我想要一个“持续且自适应”的寻路行为,我可以用一个Service节点来实现,使得它可以持续更新目的地坐标。

Action - MoveTo
    |
Service - UpdatePosition

四、UE4行为树未激活

一个常见的问题是:如果多个AI使用同一个行为树,当某个AI不需要执行行为时,如何禁用它的行为?UE4行为树内建的Decorator节点可以解决这一问题。通过使用Decorator节点,我们可以把条件逻辑与行为树分离开来,以此实现行为的自动化管理。比如下面这个例子中,将AI的生命值与一个判断节点相连,从而使AI在生命值较低时停止执行攻击行为:

Decorator - CheckHealth
    |
Action - Attack

五、UE4行为树装饰器

Decorator节点的另一个功能是用于修饰其它节点。比如我想让行为树仅在指定时间内运行,则可以使用装饰器节点。装饰器节点通过在其它行为树节点周围添加额外逻辑,实现了行为树的重用,从而加速了行为树的开发。比如我想设置AI只在晚上进行秘密行动,可以使用Sleep Decorator,来睡眠等待时间到达。

Decorator - Sleep
    |
Action - MoveTo

六、UE4行为树都有什么

在UE4中,Behavior Tree有以下几种节点:

  • Composite: 根节点,也称为插件节点,用于组合子节点
  • Decorator: 在Behavior Tree的节点周围添加额外逻辑,代表着建立在其它节点上的条件逻辑
  • Service:在Behavior Tree运行时执行,可以更新黑板或监控其它节点状态
  • Action:是所有节点的基础动作,代表着行为树的基本单位
  • Subtree: Behavior Tree的一个特殊节点,它可以在一个行为树中包含另一个行为树

七、UE4行为树黑板更新频率

UE4行为树的黑板通常会用于传递数据和状态。一旦一个值改变,所有使用该值的节点都会立即收到更新。但如果使用过于频繁,则会影响游戏性能,导致出现卡顿等问题。所以需要选择合适的黑板更新频率,以充分发挥行为树的性能,同时又能够保持游戏的流畅度。

UE4行为树内置了两个黑板范围:

  • 只在执行Behaviour Tree期间可见,且所有节点均可见
  • 大本地和全局使用,支持在许多不同的地方访问

八、UE4行为树任务节点执行次数

在Behavior Tree中,任务节点是执行行为的基本单元。不同的任务节点会执行不同的行为,例如处理输入数据、执行运算、移动等。一个任务节点可能只执行一次,可能执行多次,所以我们需要了解不同任务节点的执行次数,以便于更好的控制行为树。

在UE4中,Behavior Tree中的任务节点可以执行以下操作:

  • 只执行一次,并返回结果
  • 永久执行,直到恒定只返回
  • 执行一定次数(通常是随机或时间限制),并返回结果
  • 以某种频率循环执行任务,返回结果

九、UE4行为树寻路到跟前然后攻击

在UE4中,行为树有很多用途,其中一个常用的用途是为AI提供自动化控制。例如,我们可以用UE4的行为树构建一个简单的打斗系统,让AI之间进行战斗。

在行为树中,可能需要使用序列节点,使多个行为按照规定的顺序执行。例如在下面的序列节点中,我们可以让AI先寻路到玩家位置,然后开始攻击。

Composite - Sequence
    |
Action - MoveTo
    |
Action - Attack

结束语

UE4行为树是一种非常方便的工具,它可以提高游戏开发的效率,同时还能通过不断优化和完善,加强游戏的表现力。在这篇文章中,我们从多个方面对UE4的行为树进行了介绍和讲解,希望对大家有所帮助。