8 [RequireComponent(typeof(Camera))]
11 [SerializeField] [Range(0.1f, 100f)]
private float wheelSpeed = 1f;
13 [SerializeField] [Range(0.1f, 100f)]
private float moveSpeed = 0.3f;
15 [SerializeField] [Range(0.1f, 1f)]
private float rotateSpeed = 0.3f;
17 private Vector3 preMousePos;
24 private void MouseUpdate()
26 var scrollWheel = Input.GetAxis(
"Mouse ScrollWheel");
27 if (scrollWheel != 0.0f)
28 MouseWheel(scrollWheel);
30 if (Input.GetMouseButtonDown(0) ||
31 Input.GetMouseButtonDown(1) ||
32 Input.GetMouseButtonDown(2))
33 preMousePos = Input.mousePosition;
35 MouseDrag(Input.mousePosition);
38 private void MouseWheel(
float delta)
40 transform.position += transform.forward * delta * wheelSpeed;
43 private void MouseDrag(Vector3 mousePos)
45 var diff = mousePos - preMousePos;
47 if (diff.magnitude < Vector3.kEpsilon)
50 if (Input.GetMouseButton(2))
51 transform.Translate(-diff * Time.deltaTime * moveSpeed);
52 else if (Input.GetMouseButton(1))
53 CameraRotate(
new Vector2(-diff.y, diff.x) * rotateSpeed);
55 preMousePos = mousePos;
60 transform.RotateAround(transform.position, transform.right, angle.x);
61 transform.RotateAround(transform.position, Vector3.up, angle.y);
Make it possible to operate cameras like Scene view in Game view.
void CameraRotate(Vector2 angle)