RayCast2D позволяет нам при помощи луча искать пересечения с объектами.
Подключается как дочерняя нода.
Cast to отвечает за направление луча. По умолчанию он смотрит вертикально вниз.
Закладка Collide With содержит два пункта area и bodies . Cоответственно мы можем отключить обнаружение того или иного типа объекта.
Первый тип — Area2D , второй тип это все физические тела : KinematicBody, RidigBody, StaticBody .
Я сделал небольшую сценку. В ней к спрайту (godot) подключена нода RayCast2D .
И ниже находятся два объекта : monster_1_area и monster_2_body. Первый на Area2D , второй на StaticBody2D.
Заодно в сцене я добавил ноду Label , для показа имени ноды с которой наш луч будет пересекаться.
Для того чтобы видеть наш луч и зоны соударений объектов во время работы приложения, нам надо поставить галочку возле Visible Collision Shapes
По умолчанию в ноде RayCast2D установлена галочка возле bodies. В моем случае я активировал еще и area. Для наглядности.
Давайте попробуем вывести имя объекта с которым пересечется наш луч.
Для этого есть метод get_collider().
Искать будем в _process. Код выглядит таким образом :
Двигаем луч , и получаем имя наших монстров.
Важно. Луч считает соударения не с кончика стрелки, а с конца линии.
Что мы можем получить еще.
К примеру точку, где луч пересекает монстра. Смотрим в доки , и видим название метода get_collision_point() , который возвращает нам вектор.
Подключим его, и создадим в точке пересечения ColorRect по нажатию кнопки на мышке.
Как видим всё работает как и должно работать.
За сим пожалуй всё. Удачи !