Files
UltimateFishing2020/Assets/Scripts/Assembly-CSharp/Es/Utility/SceneViewCamera.cs
2026-03-04 10:03:45 +08:00

70 lines
1.5 KiB
C#

using UnityEngine;
namespace Es.Utility
{
[RequireComponent(typeof(Camera))]
public class SceneViewCamera : MonoBehaviour
{
[SerializeField]
[Range(0.1f, 100f)]
private float wheelSpeed = 1f;
[SerializeField]
[Range(0.1f, 100f)]
private float moveSpeed = 0.3f;
[SerializeField]
[Range(0.1f, 1f)]
private float rotateSpeed = 0.3f;
private Vector3 preMousePos;
private void Update()
{
MouseUpdate();
}
private void MouseUpdate()
{
float axis = Input.GetAxis("Mouse ScrollWheel");
if (axis != 0f)
{
MouseWheel(axis);
}
if (Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1) || Input.GetMouseButtonDown(2))
{
preMousePos = Input.mousePosition;
}
MouseDrag(Input.mousePosition);
}
private void MouseWheel(float delta)
{
base.transform.position += base.transform.forward * delta * wheelSpeed;
}
private void MouseDrag(Vector3 mousePos)
{
Vector3 vector = mousePos - preMousePos;
if (!(vector.magnitude < 1E-05f))
{
if (Input.GetMouseButton(2))
{
base.transform.Translate(-vector * Time.deltaTime * moveSpeed);
}
else if (Input.GetMouseButton(1))
{
CameraRotate(new Vector2(0f - vector.y, vector.x) * rotateSpeed);
}
preMousePos = mousePos;
}
}
public void CameraRotate(Vector2 angle)
{
base.transform.RotateAround(base.transform.position, base.transform.right, angle.x);
base.transform.RotateAround(base.transform.position, Vector3.up, angle.y);
}
}
}