Unity鼠标控制摄像机
Unity鼠标控制摄像机
类似场景编辑器控制画面的前进旋转拖动
/**********
* author : "小白虫||镜子"
* time : "2021-10-22"
* describe : "鼠标控制相机,第一人称"
* unity version : "2020.3.20"
* Blog : "https://www.cnblogs.com/jzyl"
**********/
using UnityEngine;
public class ControlCamera : MonoBehaviour
{
public Camera MainCamera;
public float Speed = 10.0f;
private float MoveH;
private float MoveV;
private float MoveSpeed;
private float RotateX;
private float RotateY;
private void Update()
{
if (Input.GetMouseButton(1)) //鼠标右键按下时开始控制
{
Move();
Rotate();
}
else if (Input.GetMouseButton(2)) //鼠标中键控制拖动
{
Drag();
}
else
{
MoveSpeed = 1.0f;
}
}
private void Move()
{
MoveSpeed += Input.GetAxis("Mouse ScrollWheel");
MoveSpeed = Mathf.Clamp(MoveSpeed, 0.02f, 10.0f);
MoveH = Input.GetAxis("Horizontal") * Time.deltaTime * Speed * (Input.GetKey(KeyCode.LeftShift) ? 2 : 1) * MoveSpeed;
MoveV = Input.GetAxis("Vertical") * Time.deltaTime * Speed * (Input.GetKey(KeyCode.LeftShift) ? 2 : 1) * MoveSpeed;
MainCamera.transform.Translate(new Vector3(MoveH, 0, MoveV), Space.Self);
}
private void Rotate()
{
RotateX = Input.GetAxis("Mouse X") * Time.deltaTime * Speed * 70;
RotateY = Input.GetAxis("Mouse Y") * Time.deltaTime * Speed * 70;
MainCamera.transform.Rotate(Vector3.up * RotateX, Space.World);
MainCamera.transform.Rotate(Vector3.right * -RotateY, Space.Self);
}
private void Drag()
{
var pos = Input.GetAxis("Mouse X") * MainCamera.transform.right + Input.GetAxis("Mouse Y") * MainCamera.transform.up;
MainCamera.transform.localPosition -= pos;
}
}

浙公网安备 33010602011771号