Files
agame/.workbuddy/memory/2026-10-16.md
T
2026-10-16 16:01:18 +08:00

1.7 KiB
Raw Blame History

2026-10-16

修复:第一人称相机高达 1.16 m(玩家缩放被静默抹掉)

  • 现象:进游戏后第一人称视角像一米多高看得见 woman 的胸口;DebugPanel 显示 「相机高度 1.161 m / 5.80 身高」。

  • 根因:world/main.gd 的 _create_player() 里写 player.global_position = ...,而该节点 此时还没入树(MultiplayerSpawner 之后才 add_child)。Node3D.get_global_transform() 在未入树时 ERR_FAIL 返回单位矩阵,set_global_transform() 顺势把 Player 根节点的 basis 换成单位阵 → player.tscn 那层 0.096096 缩放被抹掉。

  • 无头探针对照(复现两种写法,同一份 player.tscn):

    写法 Player.global_scale 模型世界高 相机相对脚底
    旧 global_position 1.0 1.561 m 1.1610 m
    新 position 0.096096 0.150 m 0.1116 m

    旧写法的 1.1610 m 与游戏内面板的 1.161 m 逐位吻合;控制台每个玩家还会刷一条 ERROR: Condition "!is_inside_tree()" is true.。

  • 修复:player.position = player_spawn_pos.position(Main 与 PlayerSpawnPos 同级、Main 无变换, 局部坐标即世界坐标)。--check-only 通过。

  • 离屏渲染三张对照图(woman 1.703 m 站位旁):probe_fix_A.png(同框,旧写法巨鼠几乎挡住 woman)、probe_fix_B.png(woman 脚边,修复后 15 cm 小鼠)、probe_fix_C.png(修复后 第一人称,面板读数 0.112 m / 0.56 身高)。

  • 附带确认:InteractionRay 世界长度在两种状态下都是 0.25 m(Camera3D 全局缩放恒为 1.0), 所以修缩放不影响拾取距离。