gpt4 book ai didi

artificial-intelligence - 行为树中的状态类操作

转载 作者:行者123 更新时间:2023-12-01 01:11:08 26 4
gpt4 key购买 nike

根据我对行为树的理解,每个行为都应该是一个简短的面向目标的行动,可以在几次迭代中完成。

例如,下面是行为树的图像:

enter image description here

现在让我们假设 驱向敌人 行为在树中需要多次迭代。所以每次通过 驱向敌人 被调用是因为它现在处于运行状态。

问题是我想打电话躲避敌人 如果附近有敌人。并考虑到 驱向敌人 总是叫我从来没有机会打电话躲避敌人 (应该叫避敌)。

  • 无论当前正在运行什么操作,我都应该遍历 Tree EACH 吗?
  • 我会以正确的方式解决这个问题吗?
  • 处理这种行为的正确方法是什么?
  • 最佳答案

    如果下面的想法对您不起作用,我会说每次都回到顶部将是您的最后手段:

    正如 Alex Champandard 在他的网站 aigamedev.com 中所建议的那样,基本的想法是,当你处于“驱赶敌人”行为时,你 include some sort of way to run some additional checks以确保该行为仍应继续。

    Alex 的方法是使用 parallel composite :一种同时运行其所有子节点的行为树节点。

    它看起来像这样:

  • 主选择器:
  • 躲避敌人
  • 定位敌人
  • 反方向行驶
  • 平行
  • 敌人在附近吗?
  • 追敌
  • 找到敌人的路径
  • 驱车前往敌人
  • 火器
  • 追旗
  • 定位标志
  • 查找路径
  • 开车去旗

  • Parallel 节点会反复不断地评估“附近有敌人吗?”节点(以合理的速度),即使执行在“Chase Enemy”子树的深处。 “敌人在附近吗?”那一刻返回失败,并行将立即返回失败并跳过完成“追逐敌人”行为。因此,您的树的下一次评估将达到“躲避敌人”行为。

    “敌人在附近吗?”条件然后作为一种断言检查或提前检查。从本质上讲,它就像一个事件驱动的特性,即使树还没有完成迭代,它也可以响应事件。

    但是,我设计系统的方式,我不使用并行行为(不能使用我使用的第 3 方游戏引擎正确地多线程)。相反,我有一个复合 Material ,它几乎可以做同样的事情,只是它评估每个子项遍历之间的检查。就像一种交错,从正常执行到评估检查来回跳跃。只有当检查失败时,我们才会跳回顶部。

    关于artificial-intelligence - 行为树中的状态类操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15489145/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com