Определение позиции курсора внутри ScrollView

Программирование на Юнити.

Определение позиции курсора внутри ScrollView

Сообщение Valter 03 мар 2011, 14:26

Здравствуйте подскажите, как получить относительную позицию курсора внутри области с скролл баром. Т.е. к примеру, у меня есть 3 Label's заключённых внутри:
scrollPosition = GUI.BeginScrollView (Rect (280,350,420,140),scrollPosition, Rect (0, 0, 220, 200));
for(var i:int=1;i<4;i++)
GUI.Label(Rect (10, 10+30*i, 220, 30),"текст");
GUI.EndScrollView();
Так вот, прик клике я должен узнать по какому Label кликнул пользователь, это делает путём банального отслеживания координат курсора:
Input.mousePosition.x
Input.mousePosition.y
Но это позиции абсолютные, есть ли функция отслеживающая локальную позицию? Чтобы знать координаты мыши относительно ScrollView?
Valter
UNец
 
Сообщения: 33
Зарегистрирован: 12 янв 2011, 18:51

Re: Определение позиции курсора внутри ScrollView

Сообщение Zaicheg 03 мар 2011, 14:39

Вычитай из координат мыши координаты элемента или наоборот, только не забывай инвертировать .y у мыши.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Определение позиции курсора внутри ScrollView

Сообщение Neodrop 03 мар 2011, 14:42

GUILayoutUtility.GetLastRect().Contain(Event.current.mousePosition) после прорисовки скролла.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Определение позиции курсора внутри ScrollView

Сообщение Valter 03 мар 2011, 15:31

GUILayoutUtility.GetLastRect().Contain(Event.current.mousePosition)
- не работает - Event.current.mousePosition не является Rect
Вычитай из координат мыши координаты элемента или наоборот, только не забывай инвертировать .y у мыши.

Всё рассчитал всё работает, но заметил баг unity, суть в следующем к примеру элементарный код:
Синтаксис:
Используется javascript
function Update ()
{
        if(Input.GetMouseButtonDown(0))
        {
print(Input.mousePosition.x);
}
}

Если кликать в 1 и тоже место unity не возвращает Input.mousePosition.x, в чём проблема? Т.е. если координаты равны тем, что уже unity выдавала, то она их не выдаёт заново, а у меня всё построено на координатах и вся система летит из-за этой ерунды.
Поясняю сколько бы ты раз не кликал на точки позиции (x=500,600,457 и т.д.) unity выведет ровно 1 раз а вдруг пользователь кликнет ещё раз как мне просчитать что он кликнул туда же?
P.S. если я кликнул 10 раз в 1 и туже точку с координатой x=500. То в консоле должно 10 раз быть написано 500. Unity3d реагирует лишь на первый клик. Проверьте у себя, элементарный код, что я написал выше у Вас также? (Unity3d версии 3.2.0f4 (61061))
Последний раз редактировалось Valter 03 мар 2011, 15:38, всего редактировалось 1 раз.
Valter
UNец
 
Сообщения: 33
Зарегистрирован: 12 янв 2011, 18:51

Re: Определение позиции курсора внутри ScrollView

Сообщение Neodrop 03 мар 2011, 15:34

Вы меня учить программировать на Unity собрались? :-?
Код, который я вам написал, работает. Просто на память писать неудобно. Не Contain а Contains
С Input глюков нет. Проверьте свой код. Тем более, что обращаться к Input не из Update некорректно (как минимум).
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Определение позиции курсора внутри ScrollView

Сообщение Valter 03 мар 2011, 15:42

Вы меня учить программировать на Unity собрались?

Я никого не учу, я написал, какую ошибку мне выдала unity. А что проверять? Я написал код выше вот он не работает. Элементарные 6 строчек. Создаёте новый проект на камеру кидаете JS скрипт из этих строк. И всё приехали. Попробуйте, у Вас тоже 3.2 стоит?
Последний раз редактировалось Valter 03 мар 2011, 15:44, всего редактировалось 1 раз.
Valter
UNец
 
Сообщения: 33
Зарегистрирован: 12 янв 2011, 18:51

Re: Определение позиции курсора внутри ScrollView

Сообщение Zaicheg 03 мар 2011, 15:43

Valter писал(а):
GUILayoutUtility.GetLastRect().Contain(Event.current.mousePosition)
- не работает - Event.current.mousePosition не является Rect

А и не должен являться, приём идёт в векторах
Rect.Contains
function Contains (point : Vector2) : bool
function Contains (point : Vector3) : bool
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Определение позиции курсора внутри ScrollView

Сообщение Valter 03 мар 2011, 15:49

Ну как проверили, это только у меня?
Valter
UNец
 
Сообщения: 33
Зарегистрирован: 12 янв 2011, 18:51

Re: Определение позиции курсора внутри ScrollView

Сообщение Valter 03 мар 2011, 16:04

Проверил на 3.1 тот же баг реагирует лишь на 1 клик в 1 и тоже место.
Valter
UNец
 
Сообщения: 33
Зарегистрирован: 12 янв 2011, 18:51

Re: Определение позиции курсора внутри ScrollView

Сообщение Valter 03 мар 2011, 16:08

Проверил на 3.0 тот же баг реагирует лишь на 1 клик в одно и тоже место. После тишина. Не пойму никто чтоли не делал серьёзных больших GUI на unity? Наверняка у многих, если не у всех GUI на координатах построен.
Valter
UNец
 
Сообщения: 33
Зарегистрирован: 12 янв 2011, 18:51

Re: Определение позиции курсора внутри ScrollView

Сообщение Zaicheg 03 мар 2011, 16:12

Лично я жду, пока вы по ниспадающей дойдёте до проверки на 1.0.1
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Определение позиции курсора внутри ScrollView

Сообщение Zaicheg 03 мар 2011, 16:13

Кстати, ответ на ваш вопрос есть в FAQ:
viewtopic.php?f=87&t=2051
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Определение позиции курсора внутри ScrollView

Сообщение Valter 03 мар 2011, 16:14

Вам шуточки, а у меня паника, проверьте пожалуйста, если у Вас есть время, это буквально секунд 30 займёт.
Valter
UNец
 
Сообщения: 33
Зарегистрирован: 12 янв 2011, 18:51

Re: Определение позиции курсора внутри ScrollView

Сообщение Valter 03 мар 2011, 16:17

Кстати, ответ на ваш вопрос есть в FAQ:
viewtopic.php?f=87&t=2051

Спасибо большое про функцию collapse, не знал. Благодарю за помощь.
Valter
UNец
 
Сообщения: 33
Зарегистрирован: 12 янв 2011, 18:51


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3