ShanxiKnowledgeBase/SXElectricityInformationAcq.../Assets/Scripts/Electroscope/CameraZoomAndModelMove.cs

35 lines
1.1 KiB
C#

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);
}
}