修复摄像机穿模

This commit is contained in:
2026-10-09 16:36:17 +08:00
parent e06818bc5a
commit 3dd9d2ec71
5 changed files with 82 additions and 33 deletions
+8
View File
@@ -10,6 +10,8 @@ extends CharacterBody3D
## 本脚本不实现任何操作,只负责「谁先谁后」和「谁有权跑」。
@onready var body: Node3D = $Body
## 本地玩家自己的模型(鼠)。第一人称要藏掉它,见 _ready()。
@onready var model: Node3D = get_node_or_null("Body/mouse") as Node3D
@onready var camera_rig: Node3D = $CameraRig
@onready var camera: Camera3D = $CameraRig/Camera
## 准心(挂在 CameraRig/HUD 下)。远端玩家的 HUD 会随 camera_rig 一起被释放。
@@ -37,6 +39,12 @@ func _ready() -> void:
pickup.set_process_unhandled_input(false)
return
# 第一人称:藏掉自己的模型。
# 摄像机的近裁剪面被调小了(见 player.tscn 的 near = 0.01),已经盖不住自己的身体 ——
# 不藏就会从内部看到模型的内壁。远端玩家的模型是各自独立的实例,不受影响。
if model != null:
model.visible = false
# 依赖注入:组件不自己去 get_node,由这里接线。
# 好处是组件不认识玩家的场景结构,换场景 / 单测时注入别的节点即可。
look.setup(camera_rig, camera, body)