{ "nodes": [ { "id": "root", "type": "root", "name": "敌人AI根节点", "description": "敌人AI行为树的根节点,控制敌人的所有行为逻辑。包含攻击、追击和巡逻三种主要行为模式。", "children": [ "main-selector" ] }, { "id": "main-selector", "type": "selector", "name": "主要行为选择器", "description": "选择器节点:按优先级执行子节点(攻击>追击>巡逻)。这确保敌人在有目标时优先战斗,没有目标时进行巡逻。", "children": [ "attack-behavior", "chase-behavior", "patrol-behavior" ] }, { "id": "attack-behavior", "type": "conditional-decorator", "name": "攻击行为", "description": "条件装饰器:只有当发现目标且距离足够近时才进行攻击。这确保敌人只在有效攻击范围内战斗。", "children": [ "attack-sequence" ], "condition": { "type": "blackboard-value-comparison", "properties": { "variableName": "hasTarget", "compareOperator": "equals", "compareValue": true } } }, { "id": "attack-sequence", "type": "sequence", "name": "攻击序列", "description": "序列节点:按顺序执行攻击相关的所有步骤,确保攻击逻辑的完整性。", "children": [ "set-attack-state", "attack-cooldown-check", "perform-attack", "reset-attack-cooldown" ] }, { "id": "set-attack-state", "type": "set-blackboard-value", "name": "设置攻击状态", "description": "黑板赋值节点:将敌人状态设置为'attacking',便于其他系统了解敌人当前行为。" }, { "id": "attack-cooldown-check", "type": "conditional-decorator", "name": "攻击冷却检查", "description": "条件装饰器:检查攻击冷却是否结束。只有冷却时间为0时才能执行攻击,防止过于频繁的攻击。", "children": [ "attack-action" ], "condition": { "type": "blackboard-value-comparison", "properties": { "variableName": "attackCooldown", "compareOperator": "lessEqual", "compareValue": 0 } } }, { "id": "attack-action", "type": "event-action", "name": "执行攻击", "description": "事件动作节点:触发实际的攻击事件,造成伤害并播放攻击动画和音效。" }, { "id": "perform-attack", "type": "log-action", "name": "攻击日志", "description": "日志动作节点:记录攻击行为,用于调试和监控敌人AI的行为表现。" }, { "id": "reset-attack-cooldown", "type": "set-blackboard-value", "name": "重置攻击冷却", "description": "黑板赋值节点:设置攻击冷却时间为1.5秒,控制攻击频率,避免过于频繁的攻击。" }, { "id": "chase-behavior", "type": "conditional-decorator", "name": "追击行为", "description": "条件装饰器:当发现目标但距离较远时进行追击。这是攻击和巡逻之间的中间状态。", "children": [ "chase-sequence" ], "condition": { "type": "blackboard-value-comparison", "properties": { "variableName": "hasTarget", "compareOperator": "equals", "compareValue": true } } }, { "id": "chase-sequence", "type": "sequence", "name": "追击序列", "description": "序列节点:执行追击相关的行为,包括状态设置、移动和冷却更新。", "children": [ "set-chase-state", "move-to-target", "update-attack-cooldown" ] }, { "id": "set-chase-state", "type": "set-blackboard-value", "name": "设置追击状态", "description": "黑板赋值节点:将敌人状态设置为'chasing',表示正在追击目标。" }, { "id": "move-to-target", "type": "event-action", "name": "向目标移动", "description": "事件动作节点:触发移动事件,让敌人朝目标方向移动。移动速度比巡逻时更快。" }, { "id": "update-attack-cooldown", "type": "math-blackboard-operation", "name": "更新攻击冷却", "description": "数学运算节点:减少攻击冷却时间,让敌人在追击过程中为下次攻击做准备。" }, { "id": "patrol-behavior", "type": "sequence", "name": "巡逻行为", "description": "序列节点:当没有目标时执行巡逻行为。这是敌人的默认行为,确保敌人始终在活动。", "children": [ "patrol-sequence" ] }, { "id": "patrol-sequence", "type": "sequence", "name": "巡逻序列", "description": "序列节点:执行完整的巡逻循环,包括状态设置、移动和等待。", "children": [ "set-patrol-state", "patrol-move", "patrol-wait" ] }, { "id": "set-patrol-state", "type": "set-blackboard-value", "name": "设置巡逻状态", "description": "黑板赋值节点:将敌人状态设置为'patrolling',表示正在巡逻。" }, { "id": "patrol-move", "type": "event-action", "name": "巡逻移动", "description": "事件动作节点:触发巡逻移动事件,让敌人在预设的巡逻路径上移动。" }, { "id": "patrol-wait", "type": "wait-action", "name": "巡逻等待", "description": "等待动作节点:在巡逻点停留2秒,模拟敌人观察周围环境。这让巡逻看起来更自然。" } ], "blackboard": [ { "name": "currentState", "type": "string", "value": "idle", "description": "敌人的当前状态(idle、attacking、chasing、patrolling),用于状态跟踪和AI调试", "group": "状态" }, { "name": "hasTarget", "type": "boolean", "value": "false", "description": "是否发现了有效目标,决定敌人是否应该从巡逻切换到追击模式", "group": "目标" }, { "name": "attackCooldown", "type": "number", "value": "0", "description": "攻击冷却倒计时(秒),控制攻击频率,0表示可以攻击,大于0表示正在冷却", "group": "战斗" }, { "name": "lastKnownTargetPosition", "type": "string", "value": "0,0", "description": "最后已知的目标位置,用于敌人在失去目标后继续搜索一段时间", "group": "目标" } ], "metadata": { "name": "behavior-tree", "created": "2025-06-24T03:38:29.653Z", "version": "1.0", "exportType": "clean" } }