Kleine Drachen für mehr Bewegung

Kleine Drachen für mehr Bewegung

Um etwas mehr Bewegung ins Bild zu bekommen, habe ich kleine Drachen animiert. Sie haben nur den Zweck das Bild des Spiels etwas aufzulockern.

Feen Drachen

Anfangs hatte ich erst eine Spezies Drachen geplant, daraus entwickelten sich dann -im momentanen Stand- drei weitere. Ich plane später noch viele mehr zu erstellen, da es spaß macht neue Feen-Drachen zu interpretieren.

Für den Anfang habe ich drei Feen-Drachen erstellt mit stark unterschiedlichen Farben. Das hat dabei geholfen, die Funktion für die Automatische Aufteilung zu schreiben. Die kleinen Drachen werden ins Bild gerufen anhand einer Einzelnen Variable. Das Heist, ich setze State.Schmetterlinge = 149 und jeder der Drachen bekommt 49 Partner seine Spezies. Die restlichen Zwei Drachen die übrig bleiben werden auf die Erste Spezies gerechnet. Am ende sind 49 Monarchfalter-Drachen, 49 Hummel-Drachen und 52 Schwalbenschwanz-Drachen im Bereich der Kamera des Spielers.

Die Große Nummer ist hier nur zur Veranschaulichung, ich nutze im Spiel 3 bis 15 Schmetterlinge je nach Fortschritt im Spiel. Die Anzahl der Drachen wird auch ein Karma-System, ich plane die Drachen zu erhöhen wenn der Spieler sich positiv gegenüber der Spielwelt verhält. Wenn der Spieler sich negativ verhält ist auch ein Event mit dem System geplant, aber das muss noch durchgeplant werden.

Die Feen-Drachen werden despawnt wenn sie ausherhalb der Kamera des Spielers sind und werde an einer zufälligen Stelle am Rand der Kamera respawnt. Damit verhindere ich, das die Drachen außerhalb der Kamera Speicherplatz verbrauchen und dass sie sich alle auf einer Seite der Karte aufhalten.

Verhalten zum User Interface

Im Spiel sind die kleinen Drachen über dem Spieler angeordnet, so sehen sie aus als ob sie fliegen. Allerdings ist auch wichtig, dass sie unter der Textbox oder anderer User Interface Elemente sind. Sonst würden sie die Lesbarkeit des User Interface behindern.

Das habe ich damit gelöst, das Game und User Interface in eigenen Szenen sind, welche unterschiedlichen Z-Index haben.

Die Textbox wurde in einem anderen Artikel behandelt:
RPG – Textbox und wie sie eingebaut wurde

func spawnBox():
	if State.Shared_Character_Position != null:
		if global_position.x >= State.Shared_Character_Position.x + spawnBoxVector.x or global_position.x <= State.Shared_Character_Position.x - spawnBoxVector.x or global_position.y >=  State.Shared_Character_Position.y + spawnBoxVector.y or global_position.y <= State.Shared_Character_Position.y - spawnBoxVector.y:
			if $"..".rollPosition == 0:
				global_position = Vector2(State.Shared_Character_Position.x + spawnBoxVector.x -10, randi_range(State.Shared_Character_Position.y - spawnBoxVector.y, State.Shared_Character_Position.y + spawnBoxVector.y)) #Rechts
			elif $"..".rollPosition == 1:
				global_position = Vector2(State.Shared_Character_Position.x - spawnBoxVector.x +10,randi_range(State.Shared_Character_Position.y - spawnBoxVector.y, State.Shared_Character_Position.y + spawnBoxVector.y)) #Links
			elif  $"..".rollPosition == 2:
				global_position = Vector2(randi_range(State.Shared_Character_Position.x - spawnBoxVector.x, State.Shared_Character_Position.x + spawnBoxVector.x),State.Shared_Character_Position.y + spawnBoxVector.y -10) #Unten
			elif $"..".rollPosition == 3:
				global_position = Vector2(randi_range(State.Shared_Character_Position.x - spawnBoxVector.x, State.Shared_Character_Position.x + spawnBoxVector.x),State.Shared_Character_Position.y - spawnBoxVector.y +10) #Oben

Spawn Zone

Um die Drachen geringer zu Halten und diese nicht auf der gesamten Karte zu bewegen, habe ich eine Spawn und Despawn Zone erstellt. Diese Zone ist einfach gesagt ein Kasten aus Koordinaten hinter welchem keine Drachen sind, dieser Kasten bewegt sich mit dem Spieler.

Als erstes wird geschaut ob der Drache auserhalb der Box ist, wenn ja wird dieser an eine andere Position gesetzt.

Die Position wir alle 0.2 Sekunden mit einem Timer neu gewürfelt um etwas Rechenleistung zu sparen. Aus dem Würfeln kann eine Zahl von 0 bis 3 entstehen welche die Himmelsrichtung der neuen Position bestimmt.

Mit der neuen Position werden sie einige Pixel weiter zur Mitte gesetzt, um zu schnelles Despawnen und Respawnen zu verhindern.

Fazit

Die kleinen Drachen geben durch ihre einfache kleine Animation etwas Bewegung ins Spiel, welche vorher gefehlt hat. Das System im Hintergrund bietet Möglichkeiten zur Weiterentwicklung, wie das oben angesprochene Karma System welches bisher nur in meinem Kopf existiert. Feen-Drachen sind auch mal eine nette Abwechslung und kommen hin und wieder mal in meinen Art und Development Streams vor, da es nicht zu viel Arbeit ist diese ins Spiel mit zu integrieren. Mit den erstellten Feen-Drachen Assets plane ich noch weitere Projekte, allerdings ist das in fernerer Zukunft.

Comments

No comments yet. Why don’t you start the discussion?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert