using System.Collections; using System.Collections.Generic; using UnityEngine; namespace RimWorldAnimationStudio { public class CameraController : MonoBehaviour { private Camera cam; [Header("Scroll controls")] public float scrollSpeed = 100f; [Header("Zoom controls")] public float zoom = -5f; public float minZoom = -3f; public float maxZoom = -15f; [Header("Max bounds")] public float maxBoundsXAxis = 30; public float maxBoundsYAxis = 30; private float x; private float y; private float curZoom; private bool mouseDragActive = false; private Vector3 mouseDragOrigin; private void Start() { x = transform.position.x; y = transform.position.y; curZoom = zoom; transform.position = new Vector3(transform.position.x, transform.position.y, -10); cam = this.GetComponent(); } private void Update() { if (Input.GetMouseButton(2)) { StartMouseDrag(); } else if (Input.GetMouseButtonUp(2)) { ResetMouseDrag(); } curZoom += Input.GetAxis("Mouse ScrollWheel") * scrollSpeed * 0.1f; curZoom = Mathf.Clamp(curZoom, maxZoom, minZoom); cam.orthographicSize = Mathf.Abs(curZoom); } public void StartMouseDrag() { Vector3 delta = cam.ScreenToWorldPoint(Input.mousePosition) - cam.transform.position; if (mouseDragActive == false) { mouseDragActive = true; mouseDragOrigin = cam.ScreenToWorldPoint(Input.mousePosition); } cam.transform.position = mouseDragOrigin - delta; } public void ResetMouseDrag() { mouseDragActive = false; } public void ResetCamera() { cam.transform.position = new Vector3(0, 0, -10); curZoom = zoom; mouseDragActive = false; } } }