using UnityEngine; public class CameraController : MonoBehaviour { [Header("Настройки перемещения")] public float moveSpeed = 10f; [Header("Настройки зума")] public float zoomSpeed = 2f; // скорость изменения размера public float minOrthoSize = 2f; // минимальный размер (максимальное приближение) public float maxOrthoSize = 50f; // максимальный размер (максимальное удаление) private Vector3 _lastMousePosition; private bool _isDragging = false; void Update() { // --- Перемещение по зажатой левой кнопке мыши --- if (Input.GetMouseButtonDown(0) && !UIBlocker.IsPointerOverUI()) // не тащим камеру, когда листаем панель { _lastMousePosition = Input.mousePosition; _isDragging = true; } else if (Input.GetMouseButtonUp(0)) { _isDragging = false; } if (_isDragging) { Vector3 currentMousePosition = Input.mousePosition; Vector3 delta = currentMousePosition - _lastMousePosition; // Двигаем камеру (инвертируем Y, потому что экранные координаты вверх, а мир вниз) transform.position += new Vector3(-delta.x, delta.y, 0) * moveSpeed * Time.deltaTime; _lastMousePosition = currentMousePosition; } // --- Зум по колёсику мыши --- float scroll = Input.GetAxis("Mouse ScrollWheel"); if (scroll != 0f && !UIBlocker.IsPointerOverUI()) { Camera cam = GetComponent(); float targetSize = cam.orthographicSize - scroll * zoomSpeed; // Ограничиваем зум диапазоном targetSize = Mathf.Clamp(targetSize, minOrthoSize, maxOrthoSize); cam.orthographicSize = targetSize; } } }