Line has no effect godot 4?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Wenn du die globale Variable `Geld` überall nutzen möchtest, musst du sicherstellen, dass dein `global.gd` Skript als Singleton (Autoload) registriert ist. 

Im `world.gd` Skript ist die Syntax für den if-Block nicht korrekt. Du solltest `==` für den Vergleich nutzen und `+=` um `Lives` zu erhöhen, so: 

if global.Geld == 10:
  global.Lives += 1

Im `Testgegner.gd` Skript könnte die Funktion so aussehen:

func _on_body_entered(body):
  if body.name == "Player":
    global.Geld += 10

Stelle sicher, dass der Spieler-Körper im Spiel den Namen "Player" hat, damit der Code funktioniert.

Woher ich das weiß:eigene Erfahrung
Gamer4214 
Fragesteller
 30.08.2023, 09:12

..aber += erhöht doch nicht, es führt die

aktion aus, wenn es höher oder gleich der zahl ist, also überprüft es nur die leben?

bei global lives += 1

0
Charmin  30.08.2023, 09:39
@Gamer4214

Entschuldige die Verwirrung. Das `+=` Zeichen ist ein Verknüpfungsoperator, der die Variable auf der linken Seite um den Wert auf der rechten Seite erhöht. In deinem Fall wird `global.Lives += 1` die `Lives` Variable um 1 erhöhen.

Wenn du `if global.Geld == 10:` schreibst, dann wird der Code im if-Block nur ausgeführt, wenn `Geld` genau 10 ist. Wenn das zutrifft, wird `global.Lives += 1` ausgeführt, was die Anzahl der `Lives` um 1 erhöht. 

Die `if`-Anweisung überprüft nur den Wert von `Geld`, und wenn dieser 10 ist, dann erhöht `global.Lives += 1` die Anzahl der Leben um 1.

0
global.Lives + 1

Ich kenn' mich ja in Godot nicht aus, aber ich vermute mal, hier wird wie in den allermeisten Sprachen das Resultat von global.Lives + 1 gerechnet und verworfen. Die Zeile ist also völlig sinnlos und sollte wohl durch sowas wie

global.Lives = global.Lives + 1

ersetzt werden.

Gamer4214 
Fragesteller
 29.08.2023, 16:13

ist es richtig das in der ready function der world zu haben? ich denke daran scheitert es

0