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

如何修复Godot中AnimatedSprite2D的“Invalid get index 'flip'”错误

问题分析与修复

核心错误:flip.h 属性不存在

你遇到的报错是因为 Godot的AnimatedSprite2D节点没有flip.h这个属性,控制水平翻转的正确属性是flip_h(下划线分隔的命名),而非点语法的flip.h。

把这两行代码:

get_node("AnimatedSprite2D").flip.h = true
get_node("AnimatedSprite2D").flip.h = false

替换为:

get_node("AnimatedSprite2D").flip_h = true
get_node("AnimatedSprite2D").flip_h = false

额外逻辑问题修复

除了上述错误,你的代码还有几处逻辑问题会导致移动和动画异常:

  1. 缩进错误导致移动减速逻辑混乱
    velocity.x = move_toward(velocity.x, 0, SPEED)这行应该放在if direction:的else分支里,否则当你按下方向键时,代码会先给velocity.x赋值为方向×速度,立刻又执行减速到0,导致角色无法移动。

  2. 动画播放顺序问题
    当前代码中Fall动画的判断在Run/Idle之后,会被后续的动画覆盖,应该把Fall动画的判断放在最前面(或调整顺序,确保下落时优先播放Fall)。

  3. 重复调用get_node影响性能
    建议像缓存AnimationPlayer一样,提前缓存AnimatedSprite2D节点,避免每次_physics_process都调用get_node。

修正后的完整代码

extends CharacterBody2D

const SPEED = 300.0
const JUMP_VELOCITY = -400.0

var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
@onready var anim = get_node("AnimationPlayer")
@onready var sprite = get_node("AnimatedSprite2D") # 缓存精灵节点

func _physics_process(delta):
    if not is_on_floor():
        velocity.y += gravity * delta

    if Input.is_action_just_pressed("ui_accept") and is_on_floor():
        velocity.y = JUMP_VELOCITY
        anim.play("Jump")

    var direction = Input.get_axis("ui_left", "ui_right")
    print(direction)
    
    # 处理翻转
    if direction == -1:
        sprite.flip_h = true
    elif direction == 1:
        sprite.flip_h = false
    
    # 处理移动
    if direction:
        velocity.x = direction * SPEED
        if velocity.y == 0:
            anim.play("Run")
    else:
        # 没有方向输入时减速到0
        velocity.x = move_toward(velocity.x, 0, SPEED)
        if velocity.y == 0:
            anim.play("Idle")
    
    # 下落动画优先判断
    if velocity.y > 0:
        anim.play("Fall")

    move_and_slide()

这样修改后,角色就能正常左右移动、翻转,且不会触发崩溃错误,动画逻辑也更合理。

内容的提问来源于stack exchange,提问作者Irnes Sumbuljevic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:40:59