[WL-816] 섬 카메라 거리 SO 화 — FI PlayerVirtualCamera(FramingTransposer) 22→15 m 를 섬 로드 때 덮음 (PD 「섬도 더 가까이」 · #816)
- WLIslandSceneSetup.ApplyIslandCameraDistance: 섬 씬의 Cinemachine 가상 카메라(islandVcamName)의 m_CameraDistance 를 islandCamDistance 로. FI 씬·코드 0줄. - WLIslandSettings: islandCamDistance 15 · islandVcamName PlayerVirtualCamera 신설 · camDistance 는 기준 기록값 22 로 복원(던전은 dungeonCamDistance 13). - 되돌리기 = islandCamDistance 0. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
aae6aa8fbd
commit
ed4c305b20
|
|
@ -81,7 +81,9 @@ MonoBehaviour:
|
|||
dungeonCameraMatchIsland: 1
|
||||
camPitch: 45
|
||||
camYaw: 0
|
||||
camDistance: 15
|
||||
camDistance: 22
|
||||
islandCamDistance: 15
|
||||
islandVcamName: PlayerVirtualCamera
|
||||
dungeonCamDistance: 13
|
||||
camFov: 60
|
||||
camLookHeight: 0
|
||||
|
|
|
|||
|
|
@ -78,6 +78,7 @@ namespace WL.Island
|
|||
// ─────────────────────────────────────────────────────────────────
|
||||
public static void FixDuplicates(WLIslandSettings cfg, Scene scene)
|
||||
{
|
||||
ApplyIslandCameraDistance(cfg, scene); // 2026-09-15 PD 「섬과 던전 모두 좀 더 가까이」 — 섬 카메라 거리(SO)
|
||||
if (cfg.fixIslandDuplicates == 0) return;
|
||||
|
||||
HideWlPc(cfg);
|
||||
|
|
@ -116,6 +117,32 @@ namespace WL.Island
|
|||
" · AudioListener 해제 " + ListenersFixed);
|
||||
}
|
||||
|
||||
// ─────────────────────────────────────────────────────────────────
|
||||
// ②-b 섬 카메라 거리 — FI `PlayerVirtualCamera` 의 CinemachineFramingTransposer.m_CameraDistance(씬 값 22)를
|
||||
// 섬 로드 때 SO 값으로 덮는다(2026-09-15 PD 「섬과 던전 모두 좀 더 가까이」 · FI 씬·코드 0줄).
|
||||
// `islandCamDistance` 0 이하면 무동작 = 씬 값 그대로(되돌리기).
|
||||
// ─────────────────────────────────────────────────────────────────
|
||||
public static int IslandCamApplied;
|
||||
|
||||
public static void ApplyIslandCameraDistance(WLIslandSettings cfg, Scene scene)
|
||||
{
|
||||
if (cfg == null || cfg.islandCamDistance <= 0f) return;
|
||||
var vcams = Object.FindObjectsByType<Cinemachine.CinemachineVirtualCamera>(FindObjectsSortMode.None);
|
||||
for (int i = 0; i < vcams.Length; i++)
|
||||
{
|
||||
var v = vcams[i];
|
||||
if (v == null || v.gameObject.scene != scene) continue;
|
||||
if (!string.IsNullOrEmpty(cfg.islandVcamName) && v.name != cfg.islandVcamName) continue;
|
||||
var ft = v.GetCinemachineComponent<Cinemachine.CinemachineFramingTransposer>();
|
||||
if (ft == null) continue;
|
||||
float was = ft.m_CameraDistance;
|
||||
ft.m_CameraDistance = cfg.islandCamDistance;
|
||||
IslandCamApplied++;
|
||||
WLIslandBridge.Log(cfg, "섬 카메라 거리 — " + v.name + " " + was.ToString("F1") + " → " +
|
||||
cfg.islandCamDistance.ToString("F1") + " m");
|
||||
}
|
||||
}
|
||||
|
||||
static readonly List<Camera> s_disabledCams = new List<Camera>(4);
|
||||
static readonly List<AudioListener> s_disabledListeners = new List<AudioListener>(4);
|
||||
|
||||
|
|
|
|||
|
|
@ -332,6 +332,14 @@ namespace WL.Island
|
|||
"🔴 섬은 이 값을 쓰지 않는다(FI Cinemachine 이 스스로 잡는다) — 기준 기록용이자 아래 던전 값의 기본값이다.")]
|
||||
public float camDistance = 22f;
|
||||
|
||||
[Tooltip("🔴 **섬 전용** 카메라 거리(m) — 2026-09-15 PD 「섬과 던전 모두 좀 더 가까이」. FI `PlayerVirtualCamera` 의 " +
|
||||
"CinemachineFramingTransposer.m_CameraDistance(씬 값 22)를 섬 로드 때 이 값으로 덮는다(FI 씬·코드 0줄). " +
|
||||
"0 이하면 무동작(= 씬 값 22 그대로).")]
|
||||
public float islandCamDistance = 15f;
|
||||
|
||||
[Tooltip("위 섬 거리를 적용할 FI 가상 카메라 이름. 비우면 섬 씬의 FramingTransposer 전부.")]
|
||||
public string islandVcamName = "PlayerVirtualCamera";
|
||||
|
||||
[Tooltip("🔴 **던전 전용** 카메라 거리(m) — WL-816i2 · PD 「던전에서는 카메라를 조금만 더 당기자」. " +
|
||||
"0 이하면 위 섬 값(22)을 그대로 쓴다. 각도 45°·yaw 0°·FOV 60 은 섬과 같게 유지하고 **거리만** 줄인다. " +
|
||||
"섬은 이 값에 전혀 영향받지 않는다.")]
|
||||
|
|
|
|||
Loading…
Reference in New Issue