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

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的状态:
    # 假设你的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)
    
    如果你用的是BlendSpace2D来处理方向动画,就把方向参数改成BlendSpace的位置:
    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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:05:13