Wie füge ich eine Scene mehrfach in eine andere und verändere ihre Position in Godot?

1 Antwort

Du kannst in der Szene, die du als Instanz laden möchtest, zB n PositionsVector() als export vergeben - dann kannst du lädst du die Szene manuell im SzeneTree rein und kannst für jede Instanz die Position manuell anspassen

#Szene die instanziert werden soll:
@export var pos: Vector2

oder du musst dass direkt in der Szene, die die Instanzen laden soll in der _ready() Funktion machen:

func _ready():
  var instanz_01 = preload(Pfad zur Instanz).instantiate()
  intanz_01.global_position = Vector(wertx,werty)
  add_child(instanz_01)
  
  var instanz_02 = preload(Pfad zur Instanz).instantiate()
  instanz_02.global_position = Vector(wertx, werty)
  add_child(instanz_02)

  usw

guennid467 
Fragesteller
 06.09.2023, 21:48

aber ich weiß ja wenn ich das programm starte noch nicht, wie viele ich laden möchte. Ich bekomme ein Zahl wie viele teilnehmer ich habe, gucke ob diese gerade oder ungerade ist und füge dann für 2 teilnehmer eine Instanz. Daher kann ich vorher noch nicht wissen wie viele "var = instanz_01, 02, etc." ich ein muss.

Ich glaube das Problem was ich habe ist, dass auch die Position von der alten insctance geändert wird.

0
paaauleee  06.09.2023, 23:27
@guennid467

Das könnteste mit einer Schleife machen - in dem Fall wohl eher "while" - da kannste dann einmal die Szene als Instanz laden und den Positionsvector - naja, da müsste man schauen, wie du das positionieren, also nach welchem Muster, willst....
Wenn du allerdings irgendwann nach dem starten, die Teilnehmer Zahl kennst, dann kannste das auch in eine For Schleifen packen - und gibst als range - die TeilnehmerAnzahl an - dann wird für jeden Teilnehmer eine Instanz erstellt....

0
guennid467 
Fragesteller
 07.09.2023, 16:47
@paaauleee

ist an sich eine gute Idee, habe aber eine andere Lösung gefunden.

Ich habe einfach ganz viele Panels schon so erstellt und werde einfach die, die ich nicht brauch unsichtbar machen. Ist keine schöne Lösung aber funktioniert

0