Files

52 lines
2.1 KiB
C#

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<Camera>();
float targetSize = cam.orthographicSize - scroll * zoomSpeed;
// Ограничиваем зум диапазоном
targetSize = Mathf.Clamp(targetSize, minOrthoSize, maxOrthoSize);
cam.orthographicSize = targetSize;
}
}
}