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的行为树进行了介绍和讲解,希望对大家有所帮助。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/180279.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-22 05:12
下一篇 2024-11-22 05:12

相关推荐

  • 深度查询宴会的文化起源

    深度查询宴会,是指通过对一种文化或主题的深度挖掘和探究,为参与者提供一次全方位的、深度体验式的文化品尝和交流活动。本文将从多个方面探讨深度查询宴会的文化起源。 一、宴会文化的起源 …

    编程 2025-04-29
  • 如何使用Python删除某一列连续多行为空的数据?

    Python是一种强大的编程语言,有着广泛的应用领域,特别是在数据处理方面。本文将介绍如何利用Python删除某一列连续多行为空的数据。 一、什么是连续多行为空的数据? 在数据处理…

    编程 2025-04-28
  • Python下载深度解析

    Python作为一种强大的编程语言,在各种应用场景中都得到了广泛的应用。Python的安装和下载是使用Python的第一步,对这个过程的深入了解和掌握能够为使用Python提供更加…

    编程 2025-04-28
  • Python递归深度用法介绍

    Python中的递归函数是一个函数调用自身的过程。在进行递归调用时,程序需要为每个函数调用开辟一定的内存空间,这就是递归深度的概念。本文将从多个方面对Python递归深度进行详细阐…

    编程 2025-04-27
  • Spring Boot本地类和Jar包类加载顺序深度剖析

    本文将从多个方面对Spring Boot本地类和Jar包类加载顺序做详细的阐述,并给出相应的代码示例。 一、类加载机制概述 在介绍Spring Boot本地类和Jar包类加载顺序之…

    编程 2025-04-27
  • 深度解析Unity InjectFix

    Unity InjectFix是一个非常强大的工具,可以用于在Unity中修复各种类型的程序中的问题。 一、安装和使用Unity InjectFix 您可以通过Unity Asse…

    编程 2025-04-27
  • 深度剖析:cmd pip不是内部或外部命令

    一、问题背景 使用Python开发时,我们经常需要使用pip安装第三方库来实现项目需求。然而,在执行pip install命令时,有时会遇到“pip不是内部或外部命令”的错误提示,…

    编程 2025-04-25
  • 动手学深度学习 PyTorch

    一、基本介绍 深度学习是对人工神经网络的发展与应用。在人工神经网络中,神经元通过接受输入来生成输出。深度学习通常使用很多层神经元来构建模型,这样可以处理更加复杂的问题。PyTorc…

    编程 2025-04-25
  • 深度解析Ant Design中Table组件的使用

    一、Antd表格兼容 Antd是一个基于React的UI框架,Table组件是其重要的组成部分之一。该组件可在各种浏览器和设备上进行良好的兼容。同时,它还提供了多个版本的Antd框…

    编程 2025-04-25
  • 深度解析MySQL查看当前时间的用法

    MySQL是目前最流行的关系型数据库管理系统之一,其提供了多种方法用于查看当前时间。在本篇文章中,我们将从多个方面来介绍MySQL查看当前时间的用法。 一、当前时间的获取方法 My…

    编程 2025-04-24

发表回复

登录后才能评论