struckd 中文文档 下载 App

Struckd Muse Behavior 触发条件 Condition Nodes 详解

条件节点是什么

Condition(条件)节点是行为树里用来"做判断"的环节。它不直接让游戏发生变化,而是检查某个条件是否成立,然后让行为树走"真分支"或"假分支"。

一个简单的例子:检查玩家是否距离 NPC 小于 5 米。是 → NPC 转头看玩家;否 → NPC 继续巡逻。

常见条件节点类型

玩家相关

条件功能
Player Near玩家是否在指定距离内
Player Has Item玩家是否携带某个特定资产
Player Is Alive玩家是否还活着
Player Presses Key玩家是否按下某个按键

对象相关

条件功能
Object Alive目标对象是否存活(HP > 0)
Object Destroyed目标对象是否已被摧毁
Object Near两个对象之间的距离是否小于阈值

变量相关

条件功能
Float Comparison检查某个 Float 变量是否大于/小于/等于某个值
Object Exists检查某个 Object 变量是否有值
String Match检查某个 String 变量是否等于指定文字

游戏状态相关

条件功能
Is Multiplayer是否处于多人模式
Game Running游戏是否正在运行(未暂停)
Is On Team X当前玩家是否属于指定队伍

条件的"是 / 否"分支

每个条件节点有两个输出端口:

这让你可以构建"如果 A 则做 B,否则做 C"的经典逻辑结构。

嵌套条件

条件可以嵌套——在一个条件节点的"真"或"假"分支上再接另一个条件节点。这样可以实现多条件组合判断:

Execute
└─ Player Near
   ├─ True → Object Alive
   │         ├─ True → Attack
   │         └─ False → Wait (5s) → Destroy Object
   └─ False → Roam Behavior

上面这个行为树的意思是:当玩家靠近时,如果目标还活着就攻击;等它死了后,等待 5 秒然后销毁尸体。如果玩家不在附近,就继续巡逻。

时间触发

Struckd 没有内置的"每 X 秒触发一次"的定时器节点。你可以用 Wait 节点 + 循环的方式模拟,但 Muse 对循环的支持有限。大多数"时间触发"的逻辑可以用"玩家进入某个区域时触发"来替代——这样也更符合"玩家主动触发"的设计原则。