Я создаю небольшую программу, которая создает шаблоны изображений, подобные этим, используя сегменты линий, которые вращаются вокруг друг друга: изображение со страницы магазина Engare для справки
Как мне сообщить Годо создать экземпляры сцены Polygon2D, которые я использую как линейные сегменты с началами на узлах Position2D, которые существуют как дети в сцене Polygon2D? Вот пример моего кода:
const SHAPE_MASTER = preload("res://SpinningBar.tscn")
...
func bar_Maker(bar_num, parent_node):
for i in range(bar_num):
var GrabbedInstance = SHAPE_MASTER.instance()
parent_node.add_child(GrabbedInstance)
bar_Maker(bar_num - 1, $Polygon2D/RotPoint)
...
func _physics_process(delta):
...
if Input.is_action_just_pressed("Switch Item"): # from an older version of the program, just bound to ctrl
bar_Maker(segment_count, BarParent)
bar_num - это количество баров для экземпляра, установленное в другом месте (диапазон 1-6).
parent_node в основной сцене - это просто Node2D с именем BarParent.
SpinningBar.tscn Я создаю экземпляр, так как GrabbedInstance имеет узел Position2D с именем "RotPoint" в противоположном конце сегмента от начала объекта. Именно в этот момент я хотел бы, чтобы последовательные сегменты вращались вокруг (а также помещал эмиттеры частиц здесь, чтобы отслеживать линии, но это тривиальная проблема, когда на этот первый ответ дан ответ).
Запуск как есть и создание дополнительных чем 1 линейный сегмент возвращает «Попытка вызова функции add_child в базовом« нулевом экземпляре »для нулевого экземпляра». Очевидно, что я добавляю второй (и более поздние) сегменты неправильно, поэтому я знаю, что это связано с тем, как я выполняю рекурсию / выбираю новых родителей для сегментов 1+ глубиной узла.