Game Engine Math

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()
  • public override void Prepare()

Die erste Methode wird in der Standardkonfiguration in regelmäßigem Abstand automatisch aufgerufen. 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). Im Beispielprojekt ist dies Bereits im Unterordner „App/Classes“ geschehen:

Player.cs

using KWEngine3;
using KWEngine3.GameObjects;
using KWEngine3.Helper;
using OpenTK.Mathematics;
using OpenTK.Windowing.GraphicsLibraryFramework;
using System;
using System.Collections.Generic;

public class Player : GameObject
{
    public override void Act()
    {
        
    }
}

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 sähe 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);

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

    AddGameObject(p);
}

Beitrag veröffentlicht

in

von

Schlagwörter:

Kommentare

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.