Четверг, 28 Марта 2024, 21:37

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » GUI (Возможно ли определить, нажал ли игрок на текстуру?)
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 это сделать можно, но ему нужно другое

Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » GUI (Возможно ли определить, нажал ли игрок на текстуру?)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг