You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Godot中让动画适配对象的本地旋转?

解决Godot中动画播放后重置对象旋转的问题

以下是几种实用的解决思路,适合刚接触Godot的开发者:

  • 用AnimationTree实现旋转叠加
    如果你还在使用AnimationPlayer,换成AnimationTree能更灵活地控制动画混合。找到对应旋转轨道的设置,将混合模式改为Additive——这样动画的旋转会叠加在对象当前的旋转角度上,而不是直接覆盖重置。操作步骤:

    1. 给目标节点添加AnimationTree节点,关联你的AnimationPlayer资源。
    2. 打开AnimationTree的编辑界面,在动画库中找到旋转轨道的属性面板,修改混合模式为Additive。
  • 手动记录并恢复旋转状态
    简单直接的方案:播放动画前先保存对象当前的旋转值,动画结束后再把旋转值设回去。示例代码(GDScript):

    # 播放前记录当前旋转(用rotation_degrees还是rotation看你习惯用角度还是弧度)
    var saved_rotation = $YourTargetNode.rotation_degrees
    # 播放动画
    $AnimationPlayer.play("your_animation_name")
    # 等待动画结束
    await $AnimationPlayer.animation_finished
    # 恢复旋转
    $YourTargetNode.rotation_degrees = saved_rotation
    

    如果是循环动画,可以在动画的animation_looped信号里处理,或者在_process中动态调整。

  • 关闭AnimationPlayer的重置设置
    检查AnimationPlayer的属性面板,看看reset_on_stop选项是否开启。如果开启,动画播放停止时会自动重置所有轨道的初始值,把这个选项关掉就能避免旋转被重置。

  • 用翻转属性替代手动旋转(针对2D角色)
    如果你是给2D角色做转身,别直接旋转节点180度,而是用节点的flip_h(水平翻转)或flip_v(垂直翻转)属性。比如Sprite2D或AnimatedSprite2D都有这个属性,设置后动画会自动适配翻转状态,不会出现播放时重置旋转的问题。

内容的提问来源于stack exchange,提问作者Homer Cowell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 09:52:05