Unity 相机围绕目标旋转、缩放功能实现
using UnityEngine;
public class RotateAndZoomControl : MonoBehaviour
{
[Header("获得旋转目标")]
[SerializeField]
private Transform target;
[Header("绑定相机")]
[SerializeField]
private Camera camera;
public float maxField;
public float minField;
private void Start()
{
camera.transform.forward = (target.position - camera1.transform.position).normalized;
}
private void Update()
{
CameraRotate();
CameraZoom();
}
private void CameraRotate()
{
var mouse_x = Input.GetAxis("Mouse X");
var mouse_y = -Input.GetAxis("Mouse Y");
if (Input.GetKey(KeyCode.Mouse0))
{
transform.RotateAround(target.transform.position, Vector3.up, mouse_x * 5);
transform.RotateAround(target.transform.position, transform.right, mouse_y * 5);
}
}
private void CameraZoom()
{
if (Input.GetAxis("Mouse ScrollWheel") > 0 && camera1.fieldOfView > minField)
{
camera.fieldOfView -= Input.GetAxis("Mouse ScrollWheel") * 5f;
}
if (Input.GetAxis("Mouse ScrollWheel") < 0 && camera1.fieldOfView < maxField)
{
camera.fieldOfView -= Input.GetAxis("Mouse ScrollWheel") * 5f;
}
}
}