Godot中AnimationTree节点未找到问题及使用方法咨询
AnimationTree 正确使用方法
先解决「Node not found」错误
你碰到的节点找不到问题,本质是场景里没加AnimationTree节点,或者路径写错了:
- 打开场景编辑器,右键你的
modelo节点,选「添加子节点」,搜索并添加AnimationTree。 - 核对代码里的路径:如果AnimationTree是
modelo的直接子节点,modelo.get_node("AnimationTree")才有效;如果是嵌套在其他节点里,要写全路径(比如modelo.get_node("Character/AnimationTree"))。
配置AnimationTree关联动画资源
AnimationTree本身不存储动画,必须绑定你的AnimationPlayer:
- 选中AnimationTree节点,在右侧检查器找到
Animation Library属性。 - 要么从下拉框选已有的AnimationPlayer,要么直接把场景里的AnimationPlayer节点拖到这个属性框里。这样AnimationTree就能读取到所有你制作的动画片段了。
实现多动画同时播放(核心步骤)
要同时播放多个动画,必须用BlendTree混合树:
- 在AnimationTree的检查器里,把
Tree Root改成BlendTree(默认是AnimationPlayer模式,和普通播放器功能一致)。 - 点击
Tree Root旁边的「编辑」按钮,打开BlendTree编辑器:- 点左上角的「添加节点」,选
Animation,每个动画对应一个节点(比如添加两个分别对应Anim1、Anim2)。 - 把每个Animation节点的输出线,拖到BlendTree的
Output节点上。 - 调整每个Animation节点的
Weight值(0到1之间):1是完全播放,0是不播放,0.5就是两个动画各占一半混合。
- 点左上角的「添加节点」,选
代码控制动画
配置好后,用代码控制权重就能实现多动画同时播放:
# 获取AnimationTree节点 var anim_tree = modelo.get_node("AnimationTree") # 播放Anim1(权重设为1,完全播放) anim_tree.set("parameters/Anim1/weight", 1.0) # 同时播放Anim2,混合度50% anim_tree.set("parameters/Anim2/weight", 0.5)
如果是用状态机(AnimationNodeStateMachine)模式(适合角色切换跑/跳这类状态),才用play()方法,但这种模式默认一次只能激活一个状态,无法同时播放多个动画。
额外排查点
- 节点名称要注意大小写,Godot里
AnimationTree和animationtree是两个不同节点。 - 代码要放在
_ready()里或者节点加载完成后调用,不然会出现节点未初始化的问题。 - 动画没反应的话,检查BlendTree里的Animation节点是否选对了对应的动画片段,权重是不是设成0了。
内容的提问来源于stack exchange,提问作者Javier Ramírez
相关产品推荐
相关产品推荐

