Проверить , что «видит» ли какая либо нода в той или иной точке можно не прибегая к использованию ноды RayCast2D.
На этом примере разберемся что к чему :
На гифке выше можно заметить что смайлы замечают нашего героя только когда он находится в зоне прямой видимости.
Работает это весьма просто : пускаем луч из смайла в координаты нашего героя, и если на пути между смайлом и нашим героем нет препятствий — мы его видим.
Код выглядит следующим образом:
В качестве результата (result) годо возвращает нам словарик:
{
position: Vector2 # точка касания
normal: Vector2 # нормаль касания
collider: Object # Обьект с корорым столкнулись или null
collider_id: ObjectID
rid: RID # RID
shape: int # индекс шеипа
metadata: Variant() # мета. Не путать с метой объекта
}
Т.е если мы запросим result.position то получим точку в которой наш луч касается с нодой.
Для того чтобы избежать коллизии с самим собой ( в случае если вы пускаете луч с физического объекта) , то в аргументе будет достаточно добавить [self].
Надеюсь вам был полезен этот материал.
Подписывайтесь на канал, вступайте в группу в ВК, и не забывайте что у нас есть дискорд сервер.
Удачи в изучении годо !
#godot #gdscript #программирование #игровой движок #уроки