Код: Выделить всё
Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Vector2 mousePercentPoint = new Vector2((mousePos.x - transform.position.x)/(fieldMask.transform.localScale.x * currentZoom - transform.position.x), (mousePos.y - transform.position.y)/(fieldMask.transform.localScale.y * currentZoom - transform.position.y));
float zoomDelta = Input.GetAxis("Mouse ScrollWheel");
currentZoom += zoomDelta;
currentZoom = Mathf.Clamp(currentZoom, minZoom, maxZoom);
transform.localScale = new Vector3(currentZoom, currentZoom, 1.0f);
mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Vector2 mousePostPercentPoint = new Vector2((mousePos.x - transform.position.x)/(fieldMask.transform.localScale.x * currentZoom - transform.position.x), (mousePos.y - transform.position.y)/(fieldMask.transform.localScale.y * currentZoom - transform.position.y));
transform.position = new Vector3((mousePercentPoint.x - mousePostPercentPoint.x), mousePercentPoint.y - mousePostPercentPoint.y, transform.position.z);
Думаю, я пробовал разные методы эта попытка включала вычисление положения мыши относительно границ преобразования в процентах (с использованием fieldMask.transform.localScale в качестве базового размера), а затем масштабирование этого вверх/вниз и соответствующее изменение положения присоединенного преобразования, но это не сработало. правильно.
Подробнее здесь: https://stackoverflow.com/questions/793 ... ed-zooming
Мобильная версия