GameObject

Da mehrere Programmierer für verschiedenste Objekte und deren Interaktionen zuständig waren, suchten wir nach einer Möglichkeit, entsprechende Interaktionsfunktionen flexibel und unkompliziert an das gewünschte Objekt zu heften. Somit sollte jeder eigene Funktionen einbinden können, ohne den grundlegenden Code für die Interaktionen selbst nochmals nachvollziehen oder nachbilden zu müssen. Entsprechende Objekte waren an sich aber zunächst nicht mehr als ein Mesh mit einer Form und einem Material, das in der Umgebung an einer festen Position platziert war. Die Funktionalität des Meshes wollten wir gerne nutzen, allerdings reichte sie damit nicht für unsere Zwecke. Um dieses Problem zu lösen, erdachten wir uns das GameObject.

GameObject = function(mesh, interaction, type, name)

Das GameObject funktioniert als Wrapper um ein spezielles mesh, das bei Instanziierung übergeben wird. So wird beim Erstellen der Umgebung bewusst ausgewählt, mit welchen Meshes (also welchen Objekten) der Spieler interagieren kann und für diese ein eigenes GameObject erstellt, welches aber weiterhin auf zugehöriges Mesh zugreifen kann.

Mit interaction wird der Name einer Interaktionsfunktion übergeben, die später bei Benutzung des Objekts aufgerufen wird. All diese Funktionen konnten wir somit bequem auslagern und separat voneinander abspeichern.

Des Weiteren unterscheiden wir zwischen drei Arten von interagierbaren Objekten, abgespeichert in type1:

  • Interactable für gewöhnliche Objekte, mit denen der Spieler interagiert, wenn er sie fokussiert hat und die linke Maustaste drückt,
  • Fire für Feuerobjekte, die dem Spieler bei Kollision Schaden zufügen und löschbar sein sollten und
  • Trigger für unsichtbare Objekte, die nur als Platzhalter dienen, um spezielle Funktionen auszulösen.

Zu guter Letzt dient name dazu, dem Objekt einen Namen zuzuweisen, um zum Beispiel bei speziellen Interaktionen unkompliziert zu überprüfen, ob der Spieler eine gewisse Art von Objekt im Inventar hat, ohne die Speicherreferenz ganz bestimmter Objekte abfragen zu müssen.


1. aufgrund der unterschiedlichen Funktionsweisen dieser drei Arten von interagierbaren Objekten entschieden wir uns dazu, diese bei Levelerstellung in den XMLs gesondert zu behandeln (mehr dazu bei XML lesen & Objekte platzieren/Die XML-Dateien)

results matching ""

    No results matching ""