KWEngine, Teil 2: Objekte darstellen

Nachdem Sie die Unterklasse GameWorld (erbt von der KWEngine-Klasse World) erstellt haben, verfügt diese Klasse über zwei Methoden:

  • public override void Act(KeyboardState ks, MouseState ms)
  • public override void Prepare()

Die erste Methode wird in der Standardkonfiguration so oft aufgerufen wie Ihr Monitor sich aktualisiert (z.B. 60x bei einem 60Hz-Monitor). In dieser Methode können Sie globale Ereignisse programmieren (sich bewegende Wolken, zufällige Spawns von Gegnern, etc.).

Die zweite Methode [Prepare()] wird nur einmalig beim Laden der Welt aufgerufen. Füllen Sie diese Methode mit Code, der beim Laden der Welt aufgerufen werden soll (Laden von 3D-Modellen, Platzierung der Objekte, die beim Start sichtbar sein sollen, etc.).


Objekte in der Prepare()-Methode erstellen

Jede Welt-Klasse arbeitet intern mit einer Liste von GameObject-Instanzen. Zu Beginn der Welt ist diese Liste leer und muss befüllt werden. Da Sie die KWEngine-Klasse GameObject nicht direkt instanziieren können, müssen Sie also eine Unterklasse der GameObject-Klasse erstellen (z.B. Player).

Player.cs

using KWEngine2;
using KWEngine2.GameObjects;
using KWEngine2.Collision;
using KWEngine2.Helper;
using OpenTK;
using OpenTK.Input;

public class Player : GameObject
{
    public override void Act(KeyboardState ks, MouseState ms)
    {
        // this method must be inside your Player class!!
    }
}

GameWorld.cs (Auszug)

public override void Prepare()
{
    Player p = new Player();
    p.Name = "Player 1";
    p.SetModel("KWCube"); // KWCube oder KWSphere
    p.SetPosition(0f, 0f, 0f);
    p.SetColor(1f, 0f, 1f); // 100% rot, 0% grün, 100% blau

    AddGameObject(p);
}

Wichtig:
Rufen Sie die Methoden Prepare() und Act() niemals selbst auf! Überlassen Sie es KWEngine, diese Methoden zu geeignetem Zeitpunkt aufzurufen. Vertrauen Sie der Engine!

So sieht die oben definierte Szene aus.

Methoden, die allen von GameObject erbenden Klassen zur Verfügung stehen

Die Liste der Methoden und Eigenschaften einer von GameObject erbenden Klasse ist zu lang, um sie hier alle aufzulisten. Es folgt eine Auswahl der gängigen Methoden, die für den Anfang benötigt werden.

Im folgenden Beispiel wird ein Player-Objekt in der Prepare()-Methode der GameWorld-Klasse erstellt und konfiguriert.

GameWorld.cs (Auszug)

public override void Prepare()
{
    Player p = new Player();
    p.Name = "Player 1";
    p.SetModel("KWCube"); // KWCube für Würfel, KWSphere für Kugel
    p.SetPosition(0f, 0f, 0f);
    p.SetScale(2f, 2f, 2f);

    // Texturmethoden:
    p.SetTexture(@".\texturefolder\filename.jpg");
    p.SetTextureRepeat(2f, 2f, CubeSide.All);

    // Optional kann ein Objekt als Kollisionsobjekt markiert werden:
    p.IsCollisionObject = true;

    // Optional kann es für die Auswahl per Maus markiert werden:
    p.IsPickable = true;

    AddGameObject(p);
}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.