summaryrefslogtreecommitdiff
path: root/Assets/Scripts/CameraFOVWithDistance.cs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-01-31 13:05:30 +0800
committer魏曹先生 <1992414357@qq.com>2026-01-31 13:05:30 +0800
commitd08e5a8128025b19c34b07b5e754749a0c3b6844 (patch)
tree0c63543674532440dc2ce5b317f8005b9aa6031b /Assets/Scripts/CameraFOVWithDistance.cs
parent64e326ff1720ceb5e4bdcb9a763f62de8ffbee4f (diff)
实现相机
Diffstat (limited to 'Assets/Scripts/CameraFOVWithDistance.cs')
-rw-r--r--Assets/Scripts/CameraFOVWithDistance.cs29
1 files changed, 29 insertions, 0 deletions
diff --git a/Assets/Scripts/CameraFOVWithDistance.cs b/Assets/Scripts/CameraFOVWithDistance.cs
new file mode 100644
index 0000000..56c3562
--- /dev/null
+++ b/Assets/Scripts/CameraFOVWithDistance.cs
@@ -0,0 +1,29 @@
+using System;
+using UnityEngine;
+
+public class CameraFOVWithDistance : MonoBehaviour
+{
+ public PlayerTracker tracker;
+ public Camera camera;
+
+ public float lerpSpeed = 0.15f;
+
+ private float _targetFOV;
+
+ private float _minDistance = 7.5f;
+ private float _maxDistance = 16.5f;
+
+ private float _minFOV = 25f;
+ private float _maxFOV = 45f;
+
+ private void Update()
+ {
+ var distancePercent = Mathf.InverseLerp(_minDistance, _maxDistance, Math.Clamp(tracker.Distance, _minDistance, _maxDistance));
+ _targetFOV = Mathf.Lerp(_minFOV, _maxFOV, distancePercent);
+ }
+
+ private void FixedUpdate()
+ {
+ camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, _targetFOV, lerpSpeed);
+ }
+}