GdScript получить путь к узлу при столкновении

Скажем, у вас есть несколько областей, и когда одна перекрывается, вы хотите, чтобы скрипт получил путь узла перекрывающегося узла. Короче говоря, как вы получаете пути узлов перекрывающихся узлов. Спасибо

2 ответа

Когда вы подключаете событие area_entered на вкладке Сигналы узла с помощью Инспектора, _on_AreaNodeName_area_entered(area): метод появится в вашем скрипте. Он активируется, когда что-то входит в CollisionShape, который у вас есть в детстве, и (area) часть этого метода представляет любой объект, вошедший в это пространство. Поэтому вы можете использовать get_path() метод, чтобы найти путь этого объекта, выполнив area.get_path(),

Для демонстрации я сделал 2D-пример с двумя узлами Area2D (AreaGreen и AreaRed) с базовыми спрайтами и формами столкновений и дал одному из них метку для отображения пути любых узлов, которые входят в область:

Узлы, используемые в Примере Области Обнаружения

Я дал узлу AreaGreen простое горизонтальное движение, затем подключил сигнал area_entered к узлу AreaRed и написал этот скрипт:

extends Area2D

func _on_AreaRed_area_entered(area):

    $Label.text = area.get_path()

    pass

Чтобы просто изменить текст метки на путь пересекающегося узла. Вот результаты:

Прежде чем области сталкиваются

После столкновения областей

Как видите, скрипт успешно нашел путь к узлу.

Я считаю, что вы обрабатываете сигнал в области (area_entered), и он отправит объект области, с которым вы перекрыли. Таким образом, вы получаете этот узел напрямую, нет необходимости в get_node (nodepath).

area2d

Другие вопросы по тегам