using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraMove : MonoBehaviour
{
private Camera mainCamera;
private Transform cameraTrans;
private int xAxisCoefficient = 1;
private int yAsixCoefficient = 1;
private string _mouseXString = "Mouse X";
private string _mouseYString = "Mouse Y";
private string _mouseScrollWheel = "Mouse ScrollWheel";
private Vector3 _currentMouseRotate = Vector3.zero;
public float fieldOfViewMin = 20.0f;
public float fieldOfviewMax = 100.0f;
public float moveSpeed = 3;
public float sensitivityDrag = 1;
public float sensitivityRotate = 3;
public float sensitivetyMouseWheel = 30;
public bool xAxisinversion = false;
public bool yAsixinversion = false;
private void Start()
{
mainCamera = gameObject.GetComponent<Camera>();
if (mainCamera == null)
{
return;
}
cameraTrans = mainCamera.transform;
xAxisCoefficient = xAxisinversion ? -1 : 1;
yAsixCoefficient = yAsixinversion ? -1 : 1;
}
private void Update()
{
if (cameraTrans == null) return;
KeyBoardControl();
MouseLeftDragControl();
MouseRightRotateControl();
MouseScrollwheelScale();
}
///键盘控制移动
private void KeyBoardMove()
{
if (Input.GetKey(KeyCode.W))
{
cameraTrans.Translate(Vector3.forward * Time.deltaTime * moveSpeed);
}
if (Input.GetKey(KeyCode.S))
{
cameraTrans.Translate(Vector3.back * Time.deltaTime * moveSpeed);
}
if (Input.GetKey(KeyCode.A))
{
cameraTrans.Translate(Vector3.left * Time.deltaTime * moveSpeed);
}
if (Input.GetKey(KeyCode.D))
{
cameraTrans.Translate(Vector3.right * Time.deltaTime * moveSpeed);
}
}
/// 点击鼠标左键移动
private void MouseMove()
{
if (Input.GetMouseButton(0))
{
Vector3 p1 = cameraTrans.position - cameraTrans.right * Input.GetAxisRaw(_mouseXString) * sensitivityDrag * Time.timeScale;
Vector3 p2 = p1 - cameraTrans.up * Input.GetAxisRaw(_mouseYString) * sensitivityDrag * Time.timeScale;
cameraTrans.position = p2;
}
}
/// 按住鼠标右键开始旋转
private void MouseRotation()
{
if (Input.GetMouseButton(1))
{
_currentMouseRotate.x = (Input.GetAxis(_mouseYString) * sensitivityRotate) * xAxisCoefficient;
_currentMouseRotate.y = (Input.GetAxis(_mouseXString) * sensitivityRotate) * yAsixCoefficient;
cameraTrans.rotation = Quaternion.Euler(cameraTrans.eulerAngles + _currentMouseRotate);
}
}
/// 滑动鼠标滚轮进行放大、放小
private void MouseScale()
{
if (Input.GetAxis(_mouseScrollWheel) == 0) return;
mainCamera.fieldOfView = mainCamera.fieldOfView - Input.GetAxis(_mouseScrollWheel) * sensitivetyMouseWheel;
mainCamera.fieldOfView = Mathf.Clamp(mainCamera.fieldOfView, fieldOfViewMin, fieldOfviewMax);
}
}
Unity 场景鼠标移动、旋转
猜你喜欢
转载自blog.csdn.net/qq_21743659/article/details/129884253
今日推荐
周排行