Übersicht
Entity-System
Die hierarchische Entity-Architektur für alle Spielobjekte.
Das Entity-System ist eine Klassenhierarchie, wobei jede Ebene mehr Funktionen hinzufügt. Wähle die passende Basisklasse für deine Entity.
GameObject
└── Actor
├── Entity3D
└── LivingActor
GameObject
Die Basisklasse für alles in der Welt.
import { GameObject } from '@mavonengine/core'
class MyObject extends GameObject {
update(delta: number): void {
// Bei jedem Tick/Frame aufgerufen
}
}
Eigenschaften
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
position | Vector3 | Weltposition |
rotation | Vector3 | Euler-Rotation |
scale | Vector3 | Skalierung |
colliderMesh | Mesh | undefined | Optionales Physik-Collider-Mesh |
garbageCollect | boolean | Auf true setzen, um zum Löschen zu markieren |
Methoden
| Methode | Beschreibung |
|---|---|
abstract update(delta) | Bei jedem Tick aufgerufen. Muss implementiert werden. |
serialize() | Gibt ein einfaches Objekt für Netzwerk-/Zustandsserialisierung zurück |
destroy() | Ressourcen bereinigen |
Actor
Erweitert GameObject um eine Pushdown-Automat-Zustandsmaschine.
import { Actor } from '@mavonengine/core'
class MyActor extends Actor {
// Zustandsmaschine wird automatisch verwaltet
}
Eigenschaften
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
state | EntityState[] | Stack der aktiven Zustände |
stateHash | string | Hash des serialisierten Zustands-Stacks |
Die update(delta)-Methode auf Actor delegiert automatisch an den obersten Zustand im Stack.
Siehe Zustandsmaschine für vollständige Details.
Entity3D
Erweitert Actor um Three.js-Modellunterstützung und Animationen.
import { Entity3D } from '@mavonengine/core'
import type { GLTF } from 'three/examples/jsm/loaders/GLTFLoader'
class MyCharacter extends Entity3D {
constructor(gltf: GLTF) {
super()
this.initModel(gltf)
}
}
Eigenschaften
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
instance | Group | Three.js-Objektgruppe (das Modell) |
animationMixer | AnimationMixer | undefined | Three.js-Animations-Mixer |
animationsMap | Map<string, AnimationAction> | Benannte Animationsaktionen |
activeAction | AnimationAction | undefined | Aktuell abspielende Animation |
Methoden
| Methode | Beschreibung |
|---|---|
initModel(gltf) | Aus einem geladenen GLTF-Asset initialisieren |
fadeToAction(name, duration) | Sanft zu einer benannten Animation übergehen |
destroy() | Entfernt Modell aus der Szene und gibt Geometrie frei |
LivingActor
Abstrakte Erweiterung von Actor für Entities, die Schaden nehmen und Gesundheit haben können.
import { LivingActor } from '@mavonengine/core'
class MyEnemy extends LivingActor {
health = 100
maxHealth = 100
isDead(): void { /* ... */ }
takeDamage(amount: number): void { /* ... */ }
heal(amount: number): void { /* ... */ }
}
Abstrakte Mitglieder
| Mitglied | Beschreibung |
|---|---|
health | Aktueller Gesundheitswert |
maxHealth | Maximaler Gesundheitswert |
isDead() | Wird aufgerufen, wenn die Gesundheit auf null sinkt |
takeDamage(amount) | Schaden zufügen |
heal(amount) | Gesundheit wiederherstellen |
Implementiert das Damageable-Interface.