Имеется код обработки движения персонажа по террайну по клику мыши (данный код в скрипте камеры в функции 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 и тоже выставлять соответсвующий флаг.
Вообщем если кто сталкивался с подобной проблемой, поделитесь кто и как ее решал?