Найти тему
Игровой движок Godot engine

№138. Raycast через код.

Проверить , что «видит» ли какая либо нода в той или иной точке можно не прибегая к использованию ноды RayCast2D.

На этом примере разберемся что к чему :

На гифке выше можно заметить что смайлы замечают нашего героя только когда он находится в зоне прямой видимости.

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

Код выглядит следующим образом:

код для примера. From — откуда идет луч. To — точка интереса луча
код для примера. From — откуда идет луч. To — точка интереса луча

В качестве результата (result) годо возвращает нам словарик:

{
position: Vector2 # точка касания
normal: Vector2 # нормаль касания
collider: Object # Обьект с корорым столкнулись или null
collider_id: ObjectID
rid: RID # RID
shape: int # индекс шеипа
metadata: Variant() # мета. Не путать с метой объекта
}

Т.е если мы запросим result.position то получим точку в которой наш луч касается с нодой.

Для того чтобы избежать коллизии с самим собой ( в случае если вы пускаете луч с физического объекта) , то в аргументе будет достаточно добавить [self].

-3

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

#godot #gdscript #программирование #игровой движок #уроки