Мне нужна помощь в создании масштабирования с помощью мыши в Unity.C#

Место общения программистов C#
Ответить
Anonymous
 Мне нужна помощь в создании масштабирования с помощью мыши в Unity.

Сообщение Anonymous »

В моей 2D-игре на Unity я пытался создать систему, в которой вы можете увеличивать и уменьшать масштаб с помощью прокрутки, и она должна центрировать масштабирование вокруг курсора, как увеличение в веб-браузере. Из-за настроек игры я не могу каким-либо образом изменить камеру, поэтому я пытаюсь выполнить масштабирование с помощью мыши, позиционируя и масштабируя преобразование, к которому прикреплен этот скрипт (камера направлена ​​прямо к этому объекту). игровой объект). У меня отключена часть масштабирования, но я уже несколько дней пытаюсь заставить позиционирование работать, и оно просто не работает должным образом. Вот мой код.

Код: Выделить всё

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 должен быть эталонным размером для масштаба преобразования по умолчанию.
Думаю, я пробовал разные методы эта попытка включала вычисление положения мыши относительно границ преобразования в процентах (с использованием fieldMask.transform.localScale в качестве базового размера), а затем масштабирование этого вверх/вниз и соответствующее изменение положения присоединенного преобразования, но это не сработало. правильно.

Подробнее здесь: https://stackoverflow.com/questions/793 ... g-in-unity
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»