Смещение ui объекта в сторону gameObject'а

258
14 апреля 2017, 19:10

Имеется карта, на ней кликабельный gameObject. Когда я нажимаю на него у меня появляется подсказка (ui элемент). Мне необходимо чтобы подсказка во время нахождения камеры над/рядом gameObject'ом находилась рядом с объектом. Но когда камера уходит от объекта, то ui элемент сдвигается к границе и остается там, до того момента когда gameObject не появится в кадре снова и подсказка не "прилипнет" к нему.. Т.е. ui элемент должен быть рядом с краем, до того пока не объект не появится в кадре, независимо от передвижения камеры.

Прошу подкинуть идей реализации или подсказок в какую сторону копать.

Answer 1

Можно проверить ГО Renderer.isVisible

https://docs.unity3d.com/ScriptReference/Renderer-isVisible.html

Если да, то находишь координаты ГО на экране
https://docs.unity3d.com/ScriptReference/Camera.WorldToScreenPoint.html

а затем перемещаешь туда свою подсказку. И держишь ее там пока ГО виден(с движением камеры нужно обновлять и позицию подсказки).

Если нет, то двигаешь подсказку к границе.

Answer 2

Думаю, что стоит копать в сторону OnBecameInvisible(), OnBecameVisible(), а также в сторону Screen, а точнее в сторону его атрибутов height, width, возможно сразу resolution.

То есть в Update() при определённом условии вызывать подсказку, а в OnBecameVisible(), OnBecameInvisible() проверять показывается ли сейчас подсказка, и если да, то задавать ей расположение относительно размера экрана, например (ну или найти центр и относительно него задавать расположение).

А, вообще, я бы очень рекомендовал ознакомиться с UI, введённым в версии 4.6. У Unity есть прекрасный раздел Learn, в котором есть раздел обучающие материалы (tutorials). Тут можно найти уроки по UI.

Дело в том, что был введён Canvas (холст), который позволяет настроить расположение UI элементов на себе относительно камеры и выбрать как они будут вести себя: фиксировано располагаться, растягиваться вместе экраном и т.д. Посмотрите уроки, рекомендую. Ну или загляните в документацию

READ ALSO
нелинейное уравнение, Отделение корней [требует правки]

нелинейное уравнение, Отделение корней [требует правки]

Нужно для уравнения написать отделение корней, часть написал, но все равно не правильно, помогите плиз, не пойму что написать

188
Получение ID из другой таблицы

Получение ID из другой таблицы

Доброго времени суток! Есть две таблицы customers с полями id_сustomer, last_name и тд (не имеет значения), и есть таблица orders c полями id_order, id_customer и тд

202
Смена цвета ячеека dataGridView

Смена цвета ячеека dataGridView

Проблема в том , что в цикле dataGridViewRows[i]

256
Привязка ListBox к переменой в другом потоке

Привязка ListBox к переменой в другом потоке

Есть экземпляр класса в другом потоке, это сервер который имеет изменяющийся список клиентовКак привязать этот список клиентов к компоненту...

233