Страница 1 из 1

Реакция триггера на Raycast

СообщениеДобавлено: 04 авг 2022, 16:26
Kakaha_228
Всем привет. Решил сделать выключатель на стене в своём FPS хорроре, но так как я новичок, я столкнулся с такой проблемой: написал скрипт выключателя, когда игрок встаёт в триггер этого выключателя, на экране появляется текст "Включить свет" и при нажатии ЛКМ свет включается, и так же для выключения. Но, убедившись в работоспособности скрипта, я решил переписать его, чтобы при попадании на него Raycast от камеры игрока, он видел этот Raycast и делал тоже самое, как и когда игрок встаёт в этот триггер. Вот нужная часть кода
Синтаксис:
Используется csharp
void OnTriggerStay(Collider col)
        {
                if (col.tag == "Player") {
                        Text.SetActive (true);
                        if (Input.GetKeyDown (KeyCode.Mouse0)) {
                                useLight ();
                        }
                }
        }

Поиск в гугле не дал результата, я так и не понял, как заставить его реагировать на Raycast... Думал в if (col.tag... переписать под Raycast, но кроме ошибок в консоли ничего не получил... Я понимаю, что это легкотня, но всё же как мне это сделать?

Re: Реакция триггера на Raycast

СообщениеДобавлено: 04 авг 2022, 16:37
Alkos26Rus
Ну так где у тебя запускается рейкаст от камеры, там и нужно проверять на столкновение рейкаста с триггером, сам триггер не обнаружит рейкаст)

Re: Реакция триггера на Raycast

СообщениеДобавлено: 04 авг 2022, 16:40
Kakaha_228
Alkos26Rus писал(а):Ну так где у тебя запускается рейкаст от камеры, там и нужно проверять на столкновение рейкаста с триггером, сам триггер не обнаружит рейкаст)

Теперь рейкаст видит триггер, ну а дальше что? При попадании на него луча он по прежнему не рабоатет

Re: Реакция триггера на Raycast

СообщениеДобавлено: 04 авг 2022, 18:29
Alkos26Rus
Kakaha_228 писал(а):
Alkos26Rus писал(а):Ну так где у тебя запускается рейкаст от камеры, там и нужно проверять на столкновение рейкаста с триггером, сам триггер не обнаружит рейкаст)

Теперь рейкаст видит триггер, ну а дальше что? При попадании на него луча он по прежнему не рабоатет

Кто он? Пустил рейкаст - если он столкнулся с нужным триггером - активировал кнопку - если не сталкивается - деактивировал кнопку

Re: Реакция триггера на Raycast

СообщениеДобавлено: 04 авг 2022, 20:48
1max1
Никогда не используй Input в физических методах, проверять кнопки нужно только в апдейте, т. к. могут быть пропуски кадров или засыпание рб объекта что блокирует метод Stay.

Синтаксис:
Используется csharp
bool inTr = false;

// onTriggerEnter
inTr = true;

// onTriggerExit
inTr = false;

// update
if (inTr && input.mouse) // что-то делаем

Re: Реакция триггера на Raycast

СообщениеДобавлено: 04 сен 2022, 16:26
Kakaha_228
Короче, сам разобрался. Почему-то никто не говорит прямо, что нужно делать, всё через какие-то непонятные намёки... В итоге пришлось разбираться самому и в итоге вышло это:

Код: Выделить всё
if(Physics.Raycast(transform.position, transform.forward, out hit, 2))
{
    if(hit.collider.tag == "Тег")-здесь нужно указать тег
    {
А здесь уже код. В моем случае через GetComponent запускать void другого скрипта.
    }
}

Данный код нужно вписать в код рейкаста на камере. Далее на нужный объект нужно накинуть скрипт, который будем активировать и присвоить объекту указанный тег. Просто, не правда ли? И почему "спецы" не могли даже ссылку на документацию скинуть, там же всё понятно написано...

Re: Реакция триггера на Raycast

СообщениеДобавлено: 05 сен 2022, 11:30
Saltant
В документации юнити есть пример рейкаста, че сложно открыть было шоле. Никогда не пойму людей которые на форуме темы строчат когда нужная им инфа написана в документации.

Re: Реакция триггера на Raycast

СообщениеДобавлено: 06 сен 2022, 12:30
Kakaha_228
Saltant писал(а):В документации юнити есть пример рейкаста, че сложно открыть было шоле. Никогда не пойму людей которые на форуме темы строчат когда нужная им инфа написана в документации.

В том примере нет кода проверки тега, я его выдрал с какого-то левого сайта

Re: Реакция триггера на Raycast

СообщениеДобавлено: 06 сен 2022, 13:40
Saltant
Kakaha_228 писал(а):
Saltant писал(а):В документации юнити есть пример рейкаста, че сложно открыть было шоле. Никогда не пойму людей которые на форуме темы строчат когда нужная им инфа написана в документации.

В том примере нет кода проверки тега, я его выдрал с какого-то левого сайта

лол, даж выдрал криво, потому что для проверки тега используется метод gameObject.CompareTag("тэг") который так же есть в документации, новички - вы чё не читаете доки? вы в школе так же учились типа, без учебников, мама деньги экономила? https://docs.unity3d.com/ScriptReferenc ... reTag.html