GUI
| |
aFriend | Дата: Четверг, 05 Февраля 2015, 18:08 | Сообщение # 1 |
участник
Сейчас нет на сайте
| Возможно ли в юнити определить, нажал ли игрок на 2D текстуру, которая является элементом GUI?
|
|
| |
zisX | Дата: Четверг, 05 Февраля 2015, 18:20 | Сообщение # 2 |
Neto Zis
Сейчас нет на сайте
| aFriend, Нет, если только с помощью rect координат текстуры и сравнивать находиться ли там мышь или нет, а потом уже можно проверить нажатие. З.Ы. В новом гуи можно
Сообщение отредактировал zisX - Четверг, 05 Февраля 2015, 18:20 |
|
| |
tracer07 | Дата: Четверг, 05 Февраля 2015, 18:23 | Сообщение # 3 |
постоянный участник
Сейчас нет на сайте
| Возможно
if (Input.GetMouseButtonDown(0)){ if (Input.mousePosition.x > texpos.x && Input.mousePosition.x < texpos.x + texpos.width){ if (Input.mousePosition.y > Screen.height - texpos.y && Input.mousePosition.y < Screen.height - texpos.x + texpos.height){ //Действия } } }
texpos - ваш Rect текстуры
Сообщение отредактировал tracer07 - Четверг, 05 Февраля 2015, 18:24 |
|
| |
aFriend | Дата: Четверг, 05 Февраля 2015, 19:38 | Сообщение # 4 |
участник
Сейчас нет на сайте
| tracer07, ну, при помощи Rect и я могу, но дело в том, что текстура может быть неправильной формы, например, звездочкой.
|
|
| |
Kwant | Дата: Четверг, 05 Февраля 2015, 21:22 | Сообщение # 5 |
почетный гость
Сейчас нет на сайте
| На текстуры нельзя кликать по определению их сущности. Кликать можно лишь по элементам, что являются частью физической модели какой либо.
Как я понял, решается вопрос, что связан с элементами GUI и так же ясно, что пытаешься кликать по элементам, которые имеют весьма не стандартные формы. По этому добавлю, что идея не удачная: не делают таких вещей - это запредельно убого; 99% в GUI/UI все элементы проверяются на пересечение прямоугольной/квадратной/круглой области.
На это есть весомые причины: 1.Простота реализации 2.Скорость работы алгоритма 3.Удобство использования такого GUI/UI (я, честно скажу, убить был бы готов разработчика, что сделал бы кнопку звёздочкой и когда кликаешь, то был бы шанс промаха между её лучами, что заставляло бы кликать точно на неё)
Если ты всё же хочешь делать кнопки произвольной формы, а стандартных библиотек не будет подразумеваться (что могли бы предоставить нужные функции), то тебе придётся погрузиться в весьма непростую теорию алгоритмов, что используются для детектирования коллизий - для произвольных фигур. К примеру: тут
|
|
| |
aFriend | Дата: Четверг, 05 Февраля 2015, 21:23 | Сообщение # 6 |
участник
Сейчас нет на сайте
| Kwant, хорошо, скажем, мне нужно повернуть кнопку на 23,57 градусов
|
|
| |
MANMANA | Дата: Четверг, 05 Февраля 2015, 21:50 | Сообщение # 7 |
почти ветеран
Сейчас нет на сайте
| а если через код цвета, как в колор-пикере? http://staraban.com/dialog-vybora-cveta-dlja-unity/ ты всегда можешь узнать код пикселя, по которому кликнул.
если в приведенном выше примере заменить существующую текстуру для колор-пикера на текстуру с прозрачной серединкой, например, в формате .tiff и кликнуть на изображении в прозрачной части, то частицы становятся невидимыми (с моделями это не проходит по определенным причинам: прозрачность в материале не предусмотрена). так вот... долго не разбирался, но, зная, какой код в RGBA соответствует прозрачности (отсутствию цвета как такового), можно определять, что это - пустое место и не реагировать на клик по нему.
как-то так... не подойдет?
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
|
|
| |
aFriend | Дата: Четверг, 05 Февраля 2015, 22:18 | Сообщение # 8 |
участник
Сейчас нет на сайте
| Более того - можно поковырять пример и узнать как они сами это реализовали)
|
|
| |
zisX | Дата: Четверг, 05 Февраля 2015, 22:55 | Сообщение # 9 |
Neto Zis
Сейчас нет на сайте
| tracer07, Хмм, может быть я выше уже написал что с помощью rect это сделать можно, но ему нужно другое
|
|
| |
|