[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
|
dungeonCameraMatchIsland: 1
|
||||||
camPitch: 45
|
camPitch: 45
|
||||||
camYaw: 0
|
camYaw: 0
|
||||||
camDistance: 15
|
camDistance: 22
|
||||||
|
islandCamDistance: 15
|
||||||
|
islandVcamName: PlayerVirtualCamera
|
||||||
dungeonCamDistance: 13
|
dungeonCamDistance: 13
|
||||||
camFov: 60
|
camFov: 60
|
||||||
camLookHeight: 0
|
camLookHeight: 0
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,7 @@ namespace WL.Island
|
||||||
// ─────────────────────────────────────────────────────────────────
|
// ─────────────────────────────────────────────────────────────────
|
||||||
public static void FixDuplicates(WLIslandSettings cfg, Scene scene)
|
public static void FixDuplicates(WLIslandSettings cfg, Scene scene)
|
||||||
{
|
{
|
||||||
|
ApplyIslandCameraDistance(cfg, scene); // 2026-09-15 PD 「섬과 던전 모두 좀 더 가까이」 — 섬 카메라 거리(SO)
|
||||||
if (cfg.fixIslandDuplicates == 0) return;
|
if (cfg.fixIslandDuplicates == 0) return;
|
||||||
|
|
||||||
HideWlPc(cfg);
|
HideWlPc(cfg);
|
||||||
|
|
@ -116,6 +117,32 @@ namespace WL.Island
|
||||||
" · AudioListener 해제 " + ListenersFixed);
|
" · 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<Camera> s_disabledCams = new List<Camera>(4);
|
||||||
static readonly List<AudioListener> s_disabledListeners = new List<AudioListener>(4);
|
static readonly List<AudioListener> s_disabledListeners = new List<AudioListener>(4);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -332,6 +332,14 @@ namespace WL.Island
|
||||||
"🔴 섬은 이 값을 쓰지 않는다(FI Cinemachine 이 스스로 잡는다) — 기준 기록용이자 아래 던전 값의 기본값이다.")]
|
"🔴 섬은 이 값을 쓰지 않는다(FI Cinemachine 이 스스로 잡는다) — 기준 기록용이자 아래 던전 값의 기본값이다.")]
|
||||||
public float camDistance = 22f;
|
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 「던전에서는 카메라를 조금만 더 당기자」. " +
|
[Tooltip("🔴 **던전 전용** 카메라 거리(m) — WL-816i2 · PD 「던전에서는 카메라를 조금만 더 당기자」. " +
|
||||||
"0 이하면 위 섬 값(22)을 그대로 쓴다. 각도 45°·yaw 0°·FOV 60 은 섬과 같게 유지하고 **거리만** 줄인다. " +
|
"0 이하면 위 섬 값(22)을 그대로 쓴다. 각도 45°·yaw 0°·FOV 60 은 섬과 같게 유지하고 **거리만** 줄인다. " +
|
||||||
"섬은 이 값에 전혀 영향받지 않는다.")]
|
"섬은 이 값에 전혀 영향받지 않는다.")]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue