Проделки позиции элемента GUI
Код:
// Префаб — это кнопка, сделанная через Create -> Button |
Ответ: Проделки позиции элемента GUI
а чего не transform.localPosition? В целом - пивот твоего парента не в нуле координат наверное. В инспекторе отображается localPosition.
Вообще с позиционированием элементов UI из кода есть свои заморочки, стараюсь этого не делать. Обычно все координаты заранее в префабе прописаны. Делаю просто PHP код:
|
Ответ: Проделки позиции элемента GUI
Надо использовать
Цитата:
|
Ответ: Проделки позиции элемента GUI
Цитата:
Дело в том что стоит задача: над каждым объектом из списка на гуе поместить кнопку. Соответственно координаты приходится рассчитывать рантайм. |
Ответ: Проделки позиции элемента GUI
Если объекты одинаковые, то можно:
1. Разместить кнопку над одним из них как чайлд объекта (поставить anchor к верхней грани как требуется) 2. Сделать кнопку префабом 3. Размещать над всеми остальными моим способом (приводил выше), делая для кнопки парентом нужный объект. |
Ответ: Проделки позиции элемента GUI
Объекты имеется в виду — в 3D пространстве, это что-то меняет?
|
Ответ: Проделки позиции элемента GUI
Проверил с localPosition — кнопка перемещается в другое место, но всё равно не туда, куда сказано.
Даже, можно сказать, дела ещё хуже: раньше хотя бы X становился какой надо, теперь вообще рандомное чисто шо в X шо в Y. Пойду ещё потыкаю, если найду причину отпишусь. |
Ответ: Проделки позиции элемента GUI
Итак, господа!
Указывать transform.position, как оказалось, это совсем не про то, получается совсем не то, что надо. Чтобы добиться результата, надо указывать anchoredPosition, который есть у компонента RectTransform. Он, хоть и наследник Transform, но просто по .transform до него не достучаться, нужно "по матчасти" вызывать его через GetComponent. Собственно решение: PHP код:
|
Ответ: Проделки позиции элемента GUI
Кхм... про 3d пространство надо было сразу написать. С 3D объектами может быть по разному, т.к. канвас бывает и WorldSpace, привязанный непосредственно к 3d объекту.
Т.е. сейчас ты проецируешь координаты 3D объекта на экран и потом указываешь их как позицию? |
Ответ: Проделки позиции элемента GUI
Да, через неё.
А есть способ лучше? |
Ответ: Проделки позиции элемента GUI
не знаю как вы, а я делаю все просто:
PHP код:
Canvas в overlay стоит, иначе пляски с бубном начинаются. А если канва в WorldSpace, то там объекты находятся в мировом пространстве и нужно сделать сначала WorldToScreen а потом ScreenToWorld, но уже с z-глубиной канваса, иначе все будет смещаться . (не знаю другого способа трансформировать координаты относительно матрицы вида камеры) Тут еще смещение может быть из-за того, что точка объекта выше самого объекта. Как у меня тут: Трансформ-бокс стоит строго по центру, но анхор у флажка выдвинут по z вперед, что бы относительно нуля стоял, а так как камера перспективная - получается такое смещение. |
Часовой пояс GMT +4, время: 17:12. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot