条件与动作怎么组合才不出错
事件表入门后,真正决定「逻辑对不对」的是条件与动作的组合方式。这页只讲组合规则与典型坑。
规则一:条件筛选实例,动作作用于筛选结果
条件不只是「判断真假」,还在筛选对象实例:
- 「Player 与 Enemy 碰撞」这个条件,会把当下正在碰撞的那几个 Enemy 实例「挑出来」;
- 后续动作「删除 Enemy」只删除被挑中的那几个,不是全场敌人。
同一事件里条件越多,筛选越严。这是整套事件系统的底层规则,理解它,大部分「为什么动作做多了/做漏了」的问题都能自己解释。
规则二:多条件是「且」的关系
一条事件里的多个条件必须同时成立才触发:
条件 1:Player 与 GoldCoin 碰撞
条件 2:变量 Score 大于 9
动作:切换到 Bonus 场景
= 分数超过 9 且正在碰金币时才进奖励关。要「或」的关系,就写成两条独立事件(各自带相同动作),或用子事件分组。
反向条件与触发型条件
- 反转条件:条件编辑器里勾选「反转」,比如「反转:Player 在地面上」= 玩家悬空时成立;
- 触发型条件(Trigger once):默认条件下,只要状态持续成立,动作每帧都执行。「碰一次扣一滴血」这种一次性行为必须配「触发一次」,否则一帧内血量扣光。这是新手第一大坑。
常见组合错误速查
| 症状 | 多半是 |
|---|---|
| 碰撞扣血瞬间清空 | 少加了「触发一次」 |
| 动作影响了全场同类对象 | 条件没把实例筛选出来,动作写在了无条件事件里 |
| 数值每帧暴涨 | 无条件事件里持续加值,没用 TimeDelta 或计时器 |
| 事件「有时不触发」 | 前面的事件已把对象删除/移动,后面的条件自然不成立(执行顺序问题) |
| 子事件没执行 | 父事件条件没全满足 |
参数里的表达式
动作的参数不只能填常数,还能填表达式:Player.X() + 100、Random(360)、Variable(Score) * 2。表达式里可以直接写变量名与函数,是事件系统里「算数」的地方。常用表达式在编辑器里有自动补全,不确定写法就点参数框旁的图标打开表达式编辑器查。
- 上一页:事件表入门:写下第一条游戏规则
- 下一页:为什么动作影响了不该影响的对象