Вот у меня есть такой участок кода, который делает зум просто в центр, а мне же нужно, чтобы он делал это относительно положения курсора мыши, прошу не скидывать готовые решения, если знаете, на каком сайте точно описано как это сделать, то скиньте, если знаете сами, то объясните пожалуйста, я просто уже целый день ищу как это сделать, но всё в пустую, а искать готовые решения я не хочу...
public Camera cam;
public float maxZoom = 5;
public float minZoom = 20;
public float sensitivity = 1;
public float speed = 30;
float targetZoom;
void Update()
{
targetZoom -= Input.mouseScrollDelta.y * sensitivity;
targetZoom = Mathf.Clamp(targetZoom, maxZoom, minZoom);
float newSize = Mathf.MoveTowards(cam.orthographicSize, targetZoom, speed * Time.deltaTime);
cam.orthographicSize = newSize;
}
Привет, ты в коде никак не перемещаешь камеру, метод Mathf.MoveTowards только скейлит по сути камеру, что тебе надо:
1. Проверять в Update если колесо мыши изменилось
2. Найти координаты мыши на сцене
3. Через Rigidbody изменять позицию камеры
еще есть много замечаний по дизайну кода:
1. Всегда делай поля закрытыми, если надо что бы поле можно редактировать было в инспекторе то используй атрибут [SerializeField], также можно поле открыть только для чтения создав публичную переменную которая будет только возвращать значение приватной но не устанавливать какое либо значение в нее public float Speed {get{return _speed}}
2. Если компонент находится на одном и том же объекте что и скрипт который этот компонент получает то при старте кешируй его в переменную ( _camera = GetComponent)
3. Что бы не было ошибок при получения компонента которого нет на объекте то используй перед началом класса атрибут [RequireComponent(typeof(Component))]