首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >行为树

行为树

作者头像
全栈程序员站长
发布2022-09-19 22:01:53
发布2022-09-19 22:01:53
1.5K0
举报

大家好,又见面了,我是你们的朋友全栈君。

行为树常被用来实现游戏中的AI。每次执行AI ,都会从根节点遍历整个树,父节点执行子节点,子节点执行完后将结果返回父节点。下面是基本的四个节点:

代码语言:javascript
复制
1 *顺序节点(Sequence):属于组合节点,顺序执行子节点,只要碰到一个子节点返回false,则返回false,否则返回true,类似于程序中的逻辑与。
2 *选择节点(Selector):属于组合节点,顺序执行子节点,只要碰到一个子节点返回true,则返回true,否则返回false,类似于程序中的逻辑或。
3 *条件节点(Condition):属于叶子节点,判断条件是否成立。
4 *执行节点(Action):属于叶子节点,执行动作,一般返回true。

关于更多关于行为树概念上的东西,大家很容易找到相关的资料,这里不再最赘述,主要是通过一个实际的例子来看行为树在AI上的应用。

这是AI文字表达的方式:

代码语言:javascript
复制
如果不是情人节,我们的Avatar将去球场打球,如果是情人节,他将带上一束花去见他的女友,但是他可能没带钱,所以他要先回家拿钱,然后去花店买花,再去
见他的女友,如果女友还在约会地点,则将花送给女友。

下面是用行为树表达的方式:

上面的图让我们能很容易指导我们的代码编写,我们需要完成所有的叶子节点,然后将他们按照图示,放到相应的组合节点中去,然后不停的遍历整个行为树。

我使用AS3完成了下面的demo,去实现上图中的行为树AI(如无法观看请下载最新的FlashPlayer)。

在Flash中,蓝色的圆表示AI控制的Avatar,你可以通过点击不同选择框来改变当前的条件,Avatar会根据条件做出不同的反应。

行为树很适合做AI编辑器,我们定义好一些条件和动作,策划人员通过简单的拖拽和设置即可实现复杂的游戏AI。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/166875.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档