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).