This commit is contained in:
Scove
2026-03-27 12:27:50 +07:00
parent d418535a7b
commit df1377206a
7 changed files with 280 additions and 41 deletions

View File

@@ -1,4 +1,5 @@
using UnityEngine;
using static OnlyScove.Scripts.CameraController; // Need to add this to access CameraController.CameraViewMode
namespace OnlyScove.Scripts
{
@@ -7,19 +8,30 @@ namespace OnlyScove.Scripts
{
[Header("Dynamic FOV")]
[SerializeField] private bool useDynamicFOV = true;
[SerializeField] private float baseFOV = 60f;
[SerializeField] private float sprintFOV = 70f;
[SerializeField] private float tpvSprintFOV = 70f; // Renamed from sprintFOV for clarity
[SerializeField] private float fovSmoothTime = 5f;
public void HandleDynamicFOV(Camera cam, InputReader inputReader)
private float _currentTpvBaseFOV; // Stored from CameraController
private float _currentFpvFOV; // Stored from CameraController
public float CurrentTpvBaseFOV => _currentTpvBaseFOV; // Expose for CameraController transitions
public void Initialize(float tpvBaseFOV, float fpvFOV)
{
_currentTpvBaseFOV = tpvBaseFOV;
_currentFpvFOV = fpvFOV;
}
public void HandleDynamicFOV(Camera cam, InputReader inputReader, CameraViewMode viewMode)
{
if (!useDynamicFOV || cam == null || inputReader == null) return;
float targetFOV = baseFOV;
float targetFOV = (viewMode == CameraViewMode.ThirdPerson) ? _currentTpvBaseFOV : _currentFpvFOV;
if (inputReader.MoveInput.magnitude > 0.1f && inputReader.IsSprintHeld)
// Apply sprint FOV only in TPV
if (viewMode == CameraViewMode.ThirdPerson && inputReader.MoveInput.magnitude > 0.1f && inputReader.IsSprintHeld)
{
targetFOV = sprintFOV;
targetFOV = tpvSprintFOV;
}
cam.fieldOfView = Mathf.Lerp(cam.fieldOfView, targetFOV, fovSmoothTime * Time.deltaTime);