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 | 当前玩家是否属于指定队伍 |
条件的"是 / 否"分支
每个条件节点有两个输出端口:
- True(真分支):条件成立时走这条线
- False(假分支):条件不成立时走这条线
这让你可以构建"如果 A 则做 B,否则做 C"的经典逻辑结构。
嵌套条件
条件可以嵌套——在一个条件节点的"真"或"假"分支上再接另一个条件节点。这样可以实现多条件组合判断:
Execute
└─ Player Near
├─ True → Object Alive
│ ├─ True → Attack
│ └─ False → Wait (5s) → Destroy Object
└─ False → Roam Behavior
上面这个行为树的意思是:当玩家靠近时,如果目标还活着就攻击;等它死了后,等待 5 秒然后销毁尸体。如果玩家不在附近,就继续巡逻。
时间触发
Struckd 没有内置的"每 X 秒触发一次"的定时器节点。你可以用 Wait 节点 + 循环的方式模拟,但 Muse 对循环的支持有限。大多数"时间触发"的逻辑可以用"玩家进入某个区域时触发"来替代——这样也更符合"玩家主动触发"的设计原则。