35 lines
1.1 KiB
C#
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);
|
|
}
|
|
} |