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

27 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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),
所以修缩放不影响拾取距离。