Игнорирование Raycast когда кликаем на GUI

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Игнорирование Raycast когда кликаем на GUI

Сообщение asterkhov 08 июл 2011, 20:47

Есть следующая проблема:
Имеется код обработки движения персонажа по террайну по клику мыши (данный код в скрипте камеры в функции Update):
Синтаксис:
Используется csharp
           
if (Input.GetKeyDown("mouse 0") && (SelectedPlayer.CurrentStatus == Player.PlayerStatus.Idle))
{
  Ray ray = camera.ScreenPointToRay(Input.mousePosition);
  RaycastHit hit;

  if (Physics.<span class="posthilit">Raycast</span>(ray, out hit, 1000F))
  {
      if(SelectedPlayer != null && hit.transform.CompareTag("Ground"))
      {
         SelectedPlayer.MoveTo(hit.point, true);  
      }
  }
}
 


Так же имеется обработка GUI элементов в других скриптах в функциях OnGUI().
так вот когда мы кликаем по какой либо кнопке или другому элементу GUI, то так же обрабатывается и код передвижения персонажа (см. выше).
Каким образом можно игнорировать Physics.Raycast если мы кликнули по GUI?

Есть пара мыслей, например в OnGUI выставлять флаг что кликнули по гуям и соответственно в скрипте камеры проверять этот флаг, но тут вопрос что раньше обрабатывается OnGUI или Update. Вариант второй, обрабатывать (пока не знаю как) то что курсор находится над гуями что типа OnHover и тоже выставлять соответсвующий флаг.

Вообщем если кто сталкивался с подобной проблемой, поделитесь кто и как ее решал?
Аватара пользователя
asterkhov
UNец
 
Сообщения: 20
Зарегистрирован: 22 мар 2011, 10:18

Re: Игнорирование Raycast когда кликаем на GUI

Сообщение Lestar 08 июл 2011, 21:46

OnMouseEnter и меняем флаг или обьекты бросаем в слой ignore raycast.
Lestar
UNIт
 
Сообщения: 114
Зарегистрирован: 05 июн 2011, 02:36

Re: Игнорирование Raycast когда кликаем на GUI

Сообщение Zaicheg 08 июл 2011, 22:19

Тут обсуждалось и ещё в каких-то темах:
viewtopic.php?f=12&t=1831

В последний раз я просто использовал такую схему:
foreach (Rect rect in links.guiManager.rects)
if (rect.Contain(mousePos))
isGUIClick = true;
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Игнорирование Raycast когда кликаем на GUI

Сообщение Neodrop 09 июл 2011, 09:27

Вот вам подарочек : viewtopic.php?f=66&t=4886 %%-
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт


Вернуться в Почемучка

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 24