diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-01-31 13:05:30 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-01-31 13:05:30 +0800 |
| commit | d08e5a8128025b19c34b07b5e754749a0c3b6844 (patch) | |
| tree | 0c63543674532440dc2ce5b317f8005b9aa6031b /Assets/Scripts/CameraFOVWithDistance.cs | |
| parent | 64e326ff1720ceb5e4bdcb9a763f62de8ffbee4f (diff) | |
实现相机
Diffstat (limited to 'Assets/Scripts/CameraFOVWithDistance.cs')
| -rw-r--r-- | Assets/Scripts/CameraFOVWithDistance.cs | 29 |
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); + } +} |
