Files
UltimateFishing/Assets/Scripts/Assembly-CSharp/ProBuilder2/Examples/CameraControls.cs
2026-02-21 16:45:37 +08:00

65 lines
1.7 KiB
C#

using UnityEngine;
namespace ProBuilder2.Examples
{
public class CameraControls : MonoBehaviour
{
private const string INPUT_MOUSE_SCROLLWHEEL = "Mouse ScrollWheel";
private const string INPUT_MOUSE_X = "Mouse X";
private const string INPUT_MOUSE_Y = "Mouse Y";
private const float MIN_CAM_DISTANCE = 10f;
private const float MAX_CAM_DISTANCE = 40f;
[Range(2f, 15f)]
public float orbitSpeed = 6f;
[Range(0.3f, 2f)]
public float zoomSpeed = 0.8f;
private float distance;
public float idleRotation = 1f;
private Vector2 dir = new Vector2(0.8f, 0.2f);
private void Start()
{
distance = Vector3.Distance(base.transform.position, Vector3.zero);
}
private void LateUpdate()
{
Vector3 eulerAngles = base.transform.localRotation.eulerAngles;
eulerAngles.z = 0f;
if (Input.GetMouseButton(0))
{
float axis = Input.GetAxis("Mouse X");
float num = 0f - Input.GetAxis("Mouse Y");
eulerAngles.x += num * orbitSpeed;
eulerAngles.y += axis * orbitSpeed;
dir.x = axis;
dir.y = num;
dir.Normalize();
}
else
{
eulerAngles.y += Time.deltaTime * idleRotation * dir.x;
eulerAngles.x += Time.deltaTime * Mathf.PerlinNoise(Time.time, 0f) * idleRotation * dir.y;
}
base.transform.localRotation = Quaternion.Euler(eulerAngles);
base.transform.position = base.transform.localRotation * (Vector3.forward * (0f - distance));
if (Input.GetAxis("Mouse ScrollWheel") != 0f)
{
float axis2 = Input.GetAxis("Mouse ScrollWheel");
distance -= axis2 * (distance / 40f) * (zoomSpeed * 1000f) * Time.deltaTime;
distance = Mathf.Clamp(distance, 10f, 40f);
base.transform.position = base.transform.localRotation * (Vector3.forward * (0f - distance));
}
}
}
}