using UnityEngine;
public class CameraControlHandler : MonoBehaviour
{
private float rotateSpeed = 5;
public Transform player;
private bool isRotate;
private Vector3 offsetPosition;
private float distance;
public float scrollSpeed;
void ScrollView()
{
distance = offsetPosition.magnitude;
distance -= Input.GetAxis("Mouse ScrollWheel") * scrollSpeed;
offsetPosition = offsetPosition.normalized * distance;
}
void RotateView()
{
if (Input.GetMouseButtonDown(1))
{
isRotate = true;
}
if (Input.GetMouseButtonUp(1))
{
isRotate = false;
}
if (isRotate)
{
Camera.main.transform.RotateAround(player.position,Vector3.up,rotateSpeed*Input.GetAxis("Mouse X"));
Camera.main.transform.RotateAround(player.position, Camera.main.transform.right, -rotateSpeed * Input.GetAxis("Mouse Y"));
offsetPosition = Camera.main.transform.position - player.position;
}
}
// Update is called once per frame
void Update()
{
CameraFOV();
float _mouseX = Input.GetAxis("Mouse X");
float _mouseY = Input.GetAxis("Mouse Y");
CameraMove(_mouseX, _mouseY);
//ScrollView();
RotateView();
//Camera.main.transform.position = offsetPosition + player.position;
}
/// <summary>
/// 滚轮控制相机视角缩放
/// </summary>
public void CameraFOV()
{
//获取鼠标滚轮的滑动量
float wheel = Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime * 500;
//改变相机的位置
Camera.main.transform.Translate(Vector3.forward * wheel);
}
/// <summary>
/// 中键控制拖动
/// </summary>
/// <param name="_mouseX"></param>
/// <param name="_mouseY"></param>
public void CameraMove(float _mouseX, float _mouseY)
{
if (Input.GetMouseButton(2))
{
//相机位置的偏移量(Vector3类型,实现原理是:向量的加法)
Vector3 moveDir = (_mouseX * -Camera.main.transform.right + _mouseY * -Camera.main.transform.forward);
Camera.main.transform.position += moveDir * 0.5f;
}
}
}
unity鼠标控制摄像机
最新推荐文章于 2023-12-31 12:57:00 发布