using UnityEngine; public class CameraZoomAndModelMove : MonoBehaviour { public Camera mainCamera; public Transform model; private Vector3 startPosition = new Vector3(0.311f, -0.118f, 0.4040003f); // FOV 60时的位置 private Vector3 endPosition = new Vector3(0.214f, -0.085f, 1.008f); // FOV 20时的位置 private float maxFOV = 60f; private float minFOV = 20f; void Update() { HandleCameraZoom(); MoveModelBasedOnFOV(); } private void HandleCameraZoom() { float scrollInput = Input.GetAxis("Mouse ScrollWheel"); mainCamera.fieldOfView -= scrollInput * 10f; mainCamera.fieldOfView = Mathf.Clamp(mainCamera.fieldOfView, minFOV, maxFOV); } private void MoveModelBasedOnFOV() { float t = Mathf.InverseLerp(maxFOV, minFOV, mainCamera.fieldOfView); float nonLinearT = t * t; Debug.Log(nonLinearT); model.localPosition = Vector3.Lerp(startPosition, endPosition, nonLinearT); // model.localPosition = new Vector3(model.localPosition.x, model.localPosition.y, model.localPosition.z + 0.03f); } }