public float zoomSensitivity = 2f;
public float mouseSensitivity = 2f;
public float speedSensitivity = 5f;
private float m_deltX = 0f;
private float m_deltY = 0f;
private Camera mainCamera;
public bool needDamping = true; //是否需要的阻尼
private float damping = 5;//阻尼
void Start()
{
mainCamera = GetComponent<Camera>();
//旋转的起始位置
Vector3 angles = transform.eulerAngles;
m_deltX = angles.y;
m_deltY = angles.x;
}
void Update()
{
UFOMove();
//ZoomMove();
LookRotation();
}
//滚轮移动前后
private void ZoomMove()
{
if (Input.GetAxis("Mouse ScrollWheel") != 0)
{
mainCamera.transform.localPosition = mainCamera.transform.position + mainCamera.transform.forward * Input.GetAxis("Mouse ScrollWheel") * zoomSensitivity; ;
}
}
//摄像机移动
private void UFOMove()
{
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
if (Input.GetKey(KeyCode.LeftShift))
{
horizontal *= 3; vertical *= 3;
}
mainCamera.transform.Translate(Vector3.forward * vertical * speedSensitivity * Time.deltaTime);
mainCamera.transform.Translate(Vector3.right * horizontal * speedSensitivity * Time.deltaTime);
}
//摄像机旋转
private void LookRotation()
{
if (Input.GetMouseButton(1))
{
m_deltX += Input.GetAxis("Mouse X") * mouseSensitivity;
m_deltY -= Input.GetAxis("Mouse Y") * mouseSensitivity;
m_deltX = ClampAngle(m_deltX, -360, 360);
m_deltY = ClampAngle(m_deltY, -70, 70);
}
Quaternion rotation = Quaternion.Euler(m_deltY, m_deltX, 0.0f);
if (needDamping)
{
mainCamera.transform.rotation = Quaternion.Lerp(mainCamera.transform.rotation, rotation, Time.deltaTime * damping);
}
else
{
mainCamera.transform.rotation = Quaternion.Euler(m_deltY, m_deltX, 0);
}
}
float ClampAngle(float angle, float minAngle, float maxAgnle)
{
if (angle <= -360)
angle += 360;
if (angle >= 360)
angle -= 360;
return Mathf.Clamp(angle, minAngle, maxAgnle);
}