像素小人有两种常见做法:AnimatedSprite2D 播帧动画,或 AnimationPlayer 去改 frame / 贴图。微型游戏用 AnimatedSprite2D 够了。
SpriteFrames
在 AnimatedSprite2D 里建动画:
idle:1–2 帧,循环run:4–8 帧,循环jump:1 帧即可
代码按状态播,不要每帧 play() 重启:
gdscript
func _physics_process(delta: float) -> void:
# ... 移动 ...
if not is_on_floor():
_anim("jump")
elif absf(velocity.x) > 10.0:
_anim("run")
else:
_anim("idle")
if velocity.x != 0:
$AnimatedSprite2D.flip_h = velocity.x < 0
func _anim(name: StringName) -> void:
if $AnimatedSprite2D.animation != name:
$AnimatedSprite2D.play(name)用速度判断 run/idle,角色被击退时动画也对。
何时上 AnimationPlayer
攻击出拳、开门、UI 弹出,这些有明确开头结尾的,用 AnimationPlayer。走路循环留给 AnimatedSprite2D。
两套都用时,别在同一帧抢 frame。攻击动画播完再把控制权交回移动状态机。
