1 Pluspunkt 0 Minuspunkte

Ich habe einen Player mit einem Script auf dem CharacterBody3D und in dem Script gibt es die Variable "speed". Wie kann ich die Variable "speed" ändern wenn ich den Player lade?

var player_script = player.find_child("CharacterBody3D").get_script()
player_script.speed = 1.0

Ich bekomme dabei den Fehler.

Invalid assignment of property or key 'speed' with value of type 'float' on a base object of type 'GDScript'.
von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

In deinem Code verwendest du get_script() auf dem CharacterBody3D was das GDScript zurückgibt. Also das Script Objekt, das an diesem Node angehängt ist. Wenn du dann versuchst, die "speed" Eigenschaft auf diesem Script Objekt zu setzen, wird der Fehler ausgelöst, weil du auf das GDScript Objekt zugreifst, und nicht auf die Instanz des Scripts, die tatsächlich die "speed" Variable enthält.

var player_script = player.find_child("CharacterBody3D")
player_script.speed = 1.0
von (640 Punkte)  
Ich möchte doch genau in dem Script das auf dem CharacterBody3D hängt eine Variable ändern.
Das tust du damit auch. Das Script leitet vermutlich von CharacterBody3D ab.

extend CharacterBody3D

Alle Eigenschaften, die du im Script definierst referenzieren also den CharacterBody3D.