Добавить в корзинуПозвонить
Найти в Дзене
Игровой движок Godot engine

№218. Проверяем с чем столкнулся луч Raycast по клику.

В этой небольшой статье покажу как узнать с чем столкнулся луч принудительно, в нашем случае через клик. В сцену я закинул наших персонажей. Без префабов, просто для наглядности. Перед тем как переходить к коду, включим отображение зон столкновений И поставим галочку которая позволит «видеть» ареи. Мы - нейтральный персонаж с нодой raycast. На него собственно и подключаем скрипт. Первым делом заставим наш луч постоянно смотреть в точку клика. Если сейчас запустить приложение, то мы увидим как наш луч работает Тут всё работает как надо. Удаляем всю функцию process. И накидываем код в функцию input Что тут происходит :
Мы по клику на левую кнопку мышки направляем луч в позицию курсора и стартуем метод force_raycast_update(). Он обновляет данные по лучу и возвращает нам в случае успеха имя родителя ареи с которой он пересёкся. ****
Ну и в качестве дополнения рассмотрим вариант при котором мы не используем ноду Raycast. Тут всё немного сложнее, так как всё строится через код. Важно тут - в

В этой небольшой статье покажу как узнать с чем столкнулся луч принудительно, в нашем случае через клик.

В сцену я закинул наших персонажей. Без префабов, просто для наглядности.

Перед тем как переходить к коду, включим отображение зон столкновений

-2

И поставим галочку которая позволит «видеть» ареи.

-3

Мы - нейтральный персонаж с нодой raycast. На него собственно и подключаем скрипт.

Первым делом заставим наш луч постоянно смотреть в точку клика.

-4

Если сейчас запустить приложение, то мы увидим как наш луч работает

-5

Тут всё работает как надо.

Удаляем всю функцию process. И накидываем код в функцию input

-6

Что тут происходит :
Мы по клику на левую кнопку мышки направляем луч в позицию курсора и стартуем метод force_raycast_update(). Он обновляет данные по лучу и возвращает нам в случае успеха имя родителя ареи с которой он пересёкся.

-7

****
Ну и в качестве дополнения рассмотрим вариант при котором мы не используем ноду Raycast.

Тут всё немного сложнее, так как всё строится через код.

-8

Важно тут - в отличии от варианта с нодой Raycast, надо подавать глобальные координаты.

Ну и запустив приложение вы уже конечно же не увидите никакого луча визуально. Потому что он «виртуальный» )
Но если сильно нужно, мы всегда можем его сами нарисовать. Например через
draw.

-9

Надеюсь материал был полезен.
На этом всё.
Подписывайтесь на канал, при желании
вступайте в группу в ВК.
Удачи в изучении годо