Game Engine Math

Schlagwort: c#

  • KWEngine, Teil 26: Einen 2D-Character-Controller erstellen

    In einem klassischen 2D-Platformer-Game muss die Spielfigur auf verschiedene Hindernisse und Zustände reagieren können. Eine Klasse, in der der dafür benötigte Code gesammelt wird, nennt man einen „Character Controller“. Eine Spielerfigur kann sich nämlich meistens nicht nach den typischen Physikgesetzen einer Spielwelt richten, weil sie in der Regel über zusätzliche Funktionen (Fliegen, Doppelsprungfunktion, usw.) verfügt…

  • KWEngine, Teil 25: Objektnavigation mit Flowfields

    Im unten abgebildeten Beispiel ist das gelbe Objekt das Ziel und die pinke Kugel die Spielfigur: Die Zielposition kann in Echtzeit verändert werden. Auch die Hindernisse dürfen sich währenddessen bewegen: Wie konfiguriert man ein Flowfield? Für dieses Beispiel wird vorausgesetzt, dass zuvor die GameObject-Klassen „Impassable„, „Wall„, „Player“ und „Enemy“ angelegt wurden. Anlegen einer Welt-Klasse Act()-Methode…

  • KWEngine, Teil 24: Zwischen zwei Welten wechseln

    In diesem Beitrag geht es darum, wie man beim Wechsel zwischen mehreren Welten Daten transferieren kann.

  • KWEngine, Teil 23: Events zeitlich planen

    Wenn Sie z.B. eine gegnerische Instanz zeitversetzt entstehen lassen möchten, können Sie solche Events planen: Hinweis zu Zeile 33:

  • KWEngine, Teil 22: Raytracing-Kollisionen

    1) Überprüfung, ob Instanzen bestimmter Klassen von einem Teststrahl getroffen werden Wenn Sie z.B. überprüfen möchten, ob Instanzen bestimmter Klassen im Blickfeld eines anderen Objekts liegen, können Sie wie folgt vorgehen: 2) Schnellere (aber ungenaue) Überprüfung, ob Instanzen bestimmter Klassen getroffen werden Wenn Sie keine punktgenaue Analyse benötigen, können Sie sich viele unnötige Berechnungen sparen,…

  • KWEngine, Teil 21: 2D-Objekte darstellen

    Eigentlich ist die Engine für 3D-Objekte konzipiert und optimiert, aber wenn Sie möchten, können Sie auch 2D-Objekte darstellen. Dies geschieht, indem Sie als 3D-Modell das bereits in der Engine enthaltene Modell „KWQuad“ verwenden. Ein KWQuad ist einfach nur ein flaches Quadrat, das intern jedoch eine unsichtbare 3D-Hitbox verwendet, damit es auch mit 3D-Objekten interagieren kann.…

  • KWEngine, Teil 20: Sichtbereiche von Objekten

    Fall #1: Blickt eine Spielfigur direkt auf ein Objekt? Mit der Methode IsLookingAt() kann eine Spielfigur prüfen, ob ihr Look-At-Vector (kurz: LAV) durch die (für den Test kugelförmige) Hitbox einer anderen Spielfigur verläuft: Fall #2: Befindet sich ein Gegner im Sichtfeld? Um den Winkel auszurechnen benötigt man folgende Formel:

  • KWEngine, Teil 19: Eltern-Kind-Beziehungen

    In Spielszenen haben Objekte oft Beziehungen zueinander: Im folgenden Beispiel bewegt sich die Spielfigur bei Betätigung der A-Taste jeden Frame um 0.01 Einheiten auf der x-Achse nach links. Ein Objekt der Klasse PowerUp existiert ebenfalls in der Welt und hat anfangs keinen „Besitzer“. Es wartet also darauf, eingesammelt zu werden. Die Player-Klasse ist somit für…

  • KWEngine, Teil 18: Unebenes Terrain

    Ein Terrain-Modell ist ein 3D-Modell wie jedes andere. Man muss es aber zunächst generieren lassen. Dazu braucht man eine Height-Map. Eine Height-Map ist ein Graustufenbild, in dem die hellen Pixel die Höhe des Terrains angeben. Dunkle Pixel bedeuten hingegen, dass das Terrain an diesen Stellen wenig oder gar keine Höhe aufweist. Das Terrain-Modell sollte zu…

  • KWEngine, Teil 17: Explosionen und Partikeleffekte

    KWEngine bietet eine Reihe vorgefertigter Explosions- und Partikeleffekte, mit deren Hilfe eine Spielszene mit zusätzlichen Informationen angereichert werden kann. Explosionen Explosionen haben in KWEngine eine eigene Klasse und können (ähnlich einer GameObject-Instanz) den Welten hinzugefügt werden. Im Gegensatz zu normalen GameObject-Instanzen entfernen sich die Explosionsobjekte jedoch selbständig aus ihren Welten, wenn der Explosionseffekt abgespielt wurde.…

  • KWEngine, Teil 16: Objekte an Stellen anderer Objekte anheften

    Damit ein GameObject (z.B. eine Spielfigur) ein anderes GameObject (z.B. ein Waffenmodell) z.B. in der Hand führen kann, müssen mehrere Bedingungen erfüllt sein: Der benötigte Code kann in der Prepare()-Methode der Welt-Klasse positioniert werden: Um herauszufinden, welche Knochen ein 3D-Modell zur Verfügung stellt, können Sie z.B. folgenden Befehl verwenden: Wie werden Objekte wieder gelöst? Für…

  • KWEngine, Teil 14: Rotationen relativ zu Objekten

    In diesem Beitrag geht es um verschiedene Arten von Rotationen, die sich allesamt in Relation zu einem bestimmten Objekt befinden. Die gezeigten Beispiele werden i.d.R. in Videospielen benötigt.

  • Objektwahl mittels Mauszeiger: Übersetzung von 2D- in 3D-Koordinaten

    In diesem Beitrag geht es um die Kollision eines Strahls mit einer Ebene und wie dadurch 2D-Mauszeigerkoordinaten in 3D-Weltkoordinaten übersetzt werden können.

  • KWEngine, Teil 13: HUD-Objekte hinzufügen

    In diesem Beitrag geht es um das Platzieren von HUD-Objekten auf dem Bildschirm.

  • KWEngine, Teil 12: Hintergrundbilder und Texturen verwenden

    In diesem Beitrag wird erläutert, wie Hintergrundbilder und Texturen auf Objekte angewendet werden können.

  • KWEngine, Teil 11: Mehr Mauszeigerinteraktionen

    In diesem Beitrag werden zwei Methoden zur Schnittpunktberechnung zwischen einem Strahl und einer Hitbox vorgestellt.

  • Sortierphase vor der eigentlichen Kollisionsprüfung: Die „Broad Phase“

    Dieser Beitrag beinhaltet einen Algorithmus zur Vorsortierung potenziell kollidierender Objekte. So einen Algorithmus nennt man einen ‚broad phase‘-Algorithmus.

  • KWEngine, Teil 10: Animationen von 3D-Modellen steuern

    In diesem Beitrag wird anhand eines Beispiels erläutert, wie Animationen von 3D-Modellen gesteuert werden.

  • KWEngine, Teil 9: Eine simple Sprungmechanik

    In diesem Artikel wird eine rudimentäre Sprungmechanik für die KWEngine erläutert.

  • KWEngine, Teil 8: Mauszeigerinteraktionen und Lichter

    In diesem Beitrag wird erläutert, wie 2D-Mauskoordinaten in 3D-Koordinaten übersetzt werden können. Zusätzlich werden Lichtquellen verwendet, um die Szene zu bereichern.

  • KWEngine, Teil 7: First und Third Person View

    Dieser Beitrag beschäftigt sich mit der First-Person- und Third-Person-Kameraperspektive für die KWEngine.

  • KWEngine, Teil 6: Eigene 3D-Modelle einbinden

    KWEngine unterstützt die gängigen Formate OBJ, DAE, FBX und GLB für 3D-Modelle. Wie diese Modelle eingebunden werden, lesen Sie in diesem Beitrag.

  • KWEngine, Teil 5: Kollisionsbehandlung

    Kollisionen sind ein wichtiger Teil einer Game-Engine. Wie Kollisionen erkannt und behandelt werden, wird in diesem Beitrag erläutert.

  • KWEngine, Teil 4: Objekte in der Welt wiederfinden

    Die Interaktion zwischen Objekten kann auf unterschiedliche Weisen erfolgen. Dieser Beitrag beschreibt zwei Wege, um dies zu realisieren.

  • KWEngine, Teil 3: Objekte steuern

    Objekte können entweder über die Tastatur oder die Maus gesteuert werden. Wie genau das funktioniert, wird in diesem Beitrag beschrieben.