Cat_Anchor 发表于 2023-2-27 18:54:03

附加包教程:22.行为树

本帖最后由 Cat_Anchor 于 2023-2-28 18:45 编辑

注:本期内容选学。



前言



上期,我们学习了字体。现在,我们来学个堪称比功能域还要冷门的内容——行为树。



https://klpbbs.com/static/image/hrline/line5.png


行为树



你可以跳过这一部分,反正下面会告诉你使用方法。

首先,我相信70%的人根本没听说过行为树。所谓行为树,是不存在于原版MC的,只存在于开发者版本的MC。首先就是一个开发者版本难倒了一大群人,而且要理解开发者命令又是个难事。虽然原版有内置的行为树,可是谁又能把行为树和开发者版本关联起来?
如果你知道行为树,那么大概有两种情况。一是查看wiki时偶然点进了开发者命令,看到有些开发者命令的描述提到了行为树;二是在MC安装包里看到了behavior_trees文件夹。
现在,我来说说行为树是什么。行为树指定了一系列特定行为,并且可以执行于玩家。比如,原版有chop_wood行为树,运行这个行为树可以撸下来一块原木。

打开行为包根目录,打开behavior_trees文件夹,这里用于存放行为树文件。写入以下代码。

{
"minecraft:behavior_tree": {
    "minecraft:name": "walk", //这里的walk就是行为树的名称。
    "minecraft:root": { //根
      "minecraft:sequence": { //顺序执行
      "children": [ //子树
          {
            "minecraft:move": { //一个组件。这里的minecraft:move组件意思是移动。
            "desired_direction": "forward", //期望移动的方向。forward代表前方。
            "max_number_of_ticks": 30 //最大移动30个游戏刻(1.5秒)。
            }
          }
      ]
      }
    }
}
}

行为树有很多组件可以用。以下列出了部分已知的组件。

移动
"minecraft:move":{"desired_direction":"forward","max_number_of_ticks":30}

找到方块
"minecraft:find_block":{"block_name":"log"}

破坏方块
"minecraft:break_block":{}

等待
"minecraft:wait":{"wait_duration":1}

找到实体
"minecraft:find_entity":{"entity_name":"item"}

移动到
"minecraft:move_to":{"block_pos_id":"target_pos","distance_epsilon":1.5}

攻击
"minecraft:attack":{"num_of_ticks":1}

消耗物品
"minecraft:consume_item":{}

看向...
"minecraft:look_at":{"block_pos":[-1,4,0]}

放置方块
"minecraft:place_block":{}

使用实体
"minecraft:use_entity":{}

以刻为单位等待
"minecraft:wait_ticks":{}

交互
"minecraft:interact":{}

看向实体
"minecraft:look_at_entity":{}

以上就是所有已知的组件。目前对行为树的研究很少很少,甚至根本没有。我已知的,也就只能到这里了。



https://klpbbs.com/static/image/hrline/line1.png


总结



这一期,我们学完了行为树。下一期,我们就要讲生物群系了。





第二十一期 第二十二期 第二十三期

巅疯狂魔 发表于 2023-2-27 19:19:43

感谢分享
页: [1]
查看完整版本: 附加包教程:22.行为树