Godot中如何设置精灵至指定帧?解决房间切换角色方向异常
解决Godot中Player切换房间时Sprite方向帧异常的问题
因为你用了AnimationTree + AnimationPlayer来控制动画,直接给Sprite调用set_frame是没用的——动画系统会接管Sprite的帧状态,手动修改会被覆盖。得通过动画系统本身来设置初始方向帧,具体步骤如下:
- 先确认你的AnimationPlayer里,每个方向(上/下/左/右)都有对应的静止动画(比如
idle_down、idle_up这类),且每个静止动画只有对应方向的那一帧。 - 在Player脚本里加个变量记录进入房间的方向:
var enter_direction: Vector2 = Vector2.DOWN # 默认向下,可外部传入修改 - 在Player的
_ready()方法里,根据enter_direction初始化AnimationTree的状态:
如果你用的是BlendSpace2D来处理方向动画,就把方向参数改成BlendSpace的位置:# 假设你的AnimationTree节点名为animation_tree # 先切换到idle状态,再设置方向参数 animation_tree.set("parameters/state", "idle") match enter_direction: Vector2.DOWN: animation_tree.set("parameters/direction", Vector2.DOWN) Vector2.UP: animation_tree.set("parameters/direction", Vector2.UP) Vector2.LEFT: animation_tree.set("parameters/direction", Vector2.LEFT) Vector2.RIGHT: animation_tree.set("parameters/direction", Vector2.RIGHT)animation_tree.set("parameters/BlendSpace2D/blend_position", enter_direction) - 在切换房间实例化Player时,把进入方向传给Player:
var player = preload("res://Player.tscn").instantiate() # 比如从上方进入新房间,就传Vector2.UP player.enter_direction = Vector2.UP add_child(player)
这样Player进入新房间时,会直接显示对应方向的静止帧,不会再出现短暂向下的怪异视觉效果。
内容的提问来源于stack exchange,提问作者TreeMan
相关产品推荐
相关产品推荐

