Страница 1 из 1

New UI экранные координаты

СообщениеДобавлено: 27 июн 2017, 17:08
Woolf
Товарищи, такой вопрос. Вот есть на экране некая панель глубокого вложения (там канвас, в канвасе еще что-то, и еще, и только потом эта самая панель).
Пользователь может перемещать эту панель по экрану. По событию drag её координаты записываются в PlayerPrefs, а при старте восстанавливаются.

Проблема в том, чтобы определить, находится ли эта самая панель в экранных координатах, а то игроки могут её утащить за пределы экрана, а aligment этой панели может быть любой, к правому верхнему углу, к центру, к нижнему углу и так далее. Как в этом случае сделать контроль нахождения панели в экране? А то из-за алигмента координаты, считанные с rectransform совершенно разные, от -Screen.width до +Screen.width

Также, хотелось бы иметь однозначный метод чтения координат панели в экранных координатах, и установку в экранных, не взирая на aligment

Re: New UI экранные координаты

СообщениеДобавлено: 27 июн 2017, 17:36
snezhok_13
Не взирая на alignment - anchoredPosition, это локальные координаты pivot-поинта (который скорее всего будет совпадать с центром), их можно перевести в мировые, с помощью transform.TransformPoint, а из мировых можно получить экранные просто. По идее это будет решать все-все случаи (popcorn)

Re: New UI экранные координаты

СообщениеДобавлено: 17 июл 2017, 15:28
eonyanov
Есть такая утилита
https://docs.unity3d.com/ScriptReferenc ... ility.html

И есть у самого RectTransform пару методов, которые могут помочь: TransformPoint, InverseTransformPoint.

Ну и можно все это комбинировать с методами камеры для преобразования координат.