1. 别再凭感觉选了!Trigger和Bool的本质区别
很多刚开始用Unity做动画的朋友,经常会纠结一个问题:我这个动画状态,到底该用Trigger还是Bool来触发?我刚开始那会儿也这样,总觉得差不多,哪个顺手用哪个,结果动画状态机经常出一些莫名其妙的Bug,比如攻击动作卡住不动,或者走路和跑步状态乱跳。后来踩过几次坑才明白,这俩兄弟看着像,但骨子里完全是两码事,用错了地方,动画逻辑就会一团糟。
简单来说,你可以把Bool参数想象成你家里的电灯开关。你按一下,灯亮了(True),它就一直亮着,直到你再去按一下把它关掉(False)。这个状态是持续的、稳定的。在动画里,Bool就用来表示角色一个持续存在的状态,比如“是否在行走”、“是否在蹲下”、“是否拿着武器”。这些状态通常会维持一段时间,不是瞬间就结束的。
而Trigger参数呢,它更像你门铃的按钮。你“叮咚”按一下,门铃响了,但响完这一声它就自动复位了,等待下一次被按下。你不可能按一下就让门铃一直响个不停。在动画里,Trigger就是干这个的:触发一个一次性的事件。比如“执行一次攻击”、“跳一下”、“受到一次击打”。事件发生,动画播放,然后一切恢复原样,参数自己就变回False了,你完全不用操心去手动“关闭”它。
这个“自动复位”是Trigger最核心的特性,也是新手最容易忽略的地方。我见过有人用Trigger来控制“奔跑”状态,结果脚本里不停地SetTrigger,状态机就疯了,在奔跑和待机之间疯狂横跳。这就是没理解Trigger的“瞬时”特性,它不适合用来维持一个状态。
所以,选择的第一原则已经出来了:如果你的动画逻辑描述的是一个“状态”(State),用Bool;如果描述的是一个“事件”(Event),用Trigger。 状态是持续的,事件是瞬时的。这个基本概念吃透了,后面所有的选择难题就迎刃而解了。
2. 实战场景拆解:什么时候该用Trigger?
理解了本质,我们来看具体怎么用。Trigger的使用场景非常聚焦,记住一点:它只为“瞬间发生然后结束”的事情服务。
2.1 经典案例:角色攻击动作
这是Trigger的“主场”。想象一个横版格斗游戏,玩家按下攻击键,角色应该立刻播放一次挥拳或劈砍的动画,动画播放完毕,角色自动回到待机或移动状态。这个过程完美符合“事件”的特征:瞬时触发、单次执行、自动复位。
在Animator Controller里,你会这样设置:
- 创建一个Trigger参数,比如叫
Attack。 - 从“Idle”(待机)状态拉一条转换线到“Attack”(攻击)动画状态。
- 在这条转换线的条件(Conditions)里,选择
Attack这个Trigger。 - 在脚

108

被折叠的 条评论
为什么被折叠?



