diff --git a/Assets/_Project/Scripts/Client/Presentation/StagingAmbiance.cs b/Assets/_Project/Scripts/Client/Presentation/StagingAmbiance.cs index 05fe242be..e04b83bcc 100644 --- a/Assets/_Project/Scripts/Client/Presentation/StagingAmbiance.cs +++ b/Assets/_Project/Scripts/Client/Presentation/StagingAmbiance.cs @@ -68,10 +68,17 @@ namespace ProjectM.Client void OnEnable() => CacheCamera(); + /// + /// NEVER drive a camera that a real rig owns. This component rides Env_SeabedKit.prefab, which Game.unity + /// instantiates as well as ArtStaging — so on 2026-08-07 the drift below wrote _cam.position every + /// LateUpdate against PrototypeCameraRig's follow, slamming the camera from its intended y~15.7 back to + /// the authored y~1.5 each frame. Live symptom: "so far zoomed in and shaking" (measured: y oscillating + /// 1.16 ↔ 13.56, 7.4 units per tick). Gate on the RIG, not on a scene name — scene-name checks are banned. + /// void CacheCamera() { var cam = Camera.main != null ? Camera.main : Object.FindFirstObjectByType(); - if (cam == null) return; + if (cam == null || cam.GetComponent() != null) { _cam = null; return; } if (_cam != cam.transform) { _cam = cam.transform; _camBase = _cam.position; } }