Godot中AnimationTrack调用脚本函数失效问题求助
排查AnimationPlayer中Attack动画无法触发函数调用的问题
核心排查步骤
- 检查Attack动画的函数调用轨道关键帧
确认关键帧的时间轴位置处于动画播放范围内,比如Attack动画时长2秒,关键帧不能设到3秒以外;同时核对关键帧的函数名称拼写,必须和脚本里的函数完全一致(大小写敏感,比如on_attack()和On_Attack()会被判定为不同函数)。 - 验证AnimationTree的Attack动画控制逻辑
- 检查状态机的过渡条件:是否设置了正确的触发规则,比如是否需要从Idle/Walk状态切换、攻击输入是否被正确检测,有没有其他条件阻塞了Attack状态的激活。
- 查看Attack状态的播放配置:是否设为
单次播放模式,是否开启了自动退出导致动画还没播放到关键帧就提前结束。
- 核对Blender导出设置
重新确认导出GLB/GLTF时,是否勾选了动画曲线和自定义轨道选项,Attack动画的函数调用轨道可能在导出时被遗漏。可以尝试单独导出Attack动画,再导入Godot测试。 - 确认脚本函数的可见性与绑定
承载AnimationPlayer的节点绑定的脚本中,目标函数需保持公开(Godot 4.x需加public修饰符,Godot 3.x无需额外修饰),且脚本未被禁用。可以在函数开头添加print("Attack函数触发"),通过控制台输出直接验证是否被调用。 - 检查Attack动画是否真的被播放
在触发Attack动画的代码中加入print($AnimationPlayer.current_animation),确认动画确实被成功调用,排除状态机逻辑错误导致未进入Attack动画的情况。
快速定位测试
临时移除AnimationTree,直接在脚本中调用$AnimationPlayer.play("Attack"):
- 如果此时函数能触发,说明问题出在AnimationTree的状态过渡或配置上;
- 如果仍无法触发,就聚焦到Attack动画本身的轨道设置和导出环节。
内容的提问来源于stack exchange,提问作者Barrrettt
相关产品推荐
相关产品推荐

