using UnityEngine; /// /// 鼠标控制相机Fov进行镜头方法缩小 /// public class CameraZoomAndModelMove : MonoBehaviour { public Camera mainCamera;//主相机 public Transform model;//验电笔模型 //需要自定义模型位置,首先Camera的Fov是60的时候,填写模型的坐标 public Vector3 startPosition = new Vector3(0.819f, -0.06f, 1.04f); // FOV 60时的位置 //Camera的Fov是20的时候,填写模型的坐标 public Vector3 endPosition = new Vector3(0.559f, 0.052f, 2.5f); // 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; model.localPosition = Vector3.Lerp(startPosition, endPosition, nonLinearT); } }