Unity 相机围绕目标旋转、缩放功能实现
//
using UnityEngine;
public class RotateAndZoomControl : MonoBehaviour
{
[Header("获得旋转目标")]
[SerializeField]
private Transform target;//获取旋转目标
[Header("绑定相机")]
[SerializeField]
private Camera camera;//绑定相机
public float maxField;//控制相机FieldOfView的最大角度
public float minField;//控制相机FieldOfView的最小角度
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");//获取鼠标X轴移动
var mouse_y = -Input.GetAxis("Mouse Y");//获取鼠标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);
}
}
///
/// 相机滚轮缩放(通过修改相机Field Of View的来进行缩放)
///
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;
}
}
}