kruasan1
@kruasan1
Indie Game Developer

Как проверить что Raycast ни во что не врезался?

У меня есть скрипт который показывает текст при наведении на обьект с тегом "Eaten"
void EatObject ()
    {
        RaycastHit hit;
        if (Physics.Raycast(Camera.transform.position, Camera.transform.forward, out hit, range, ~IgnoreMe))
        {
            if (hit.collider.tag == "Eaten")
            {
                BtnE.SetActive(true);
                Debug.Log("сьедобно");
                isWorkThat = true;
            }
            else
            {
                isWorkThat = false;
                BtnE.SetActive(false);
            }
        }
    }

Проблема в том, что у луча есть дистанция и если словить момент когда я смотрю на обьект и отхожу от него, то надпись остается и не исчезает. Нужно сделать так чтобы она исчезала когда я нахожусь далеко от обьекта и даже если смотрю на него, она также должна исчезать.
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 2
freeExec
@freeExec
Участник OpenStreetMap
Так а где код, когда Raycast вернул false?
Ответ написан
WNeZRoS
@WNeZRoS
Если Physics.Raycast вернул false, то "Raycast ни во что не врезался".

В вашем коде надо у первого if добавить else блок, и там напить обработку этого случая.
Но без дублирования кода будет проще после isWorkThat = true; добавить return;, а содержимое else блока перенести в конец функции после всех if.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы