Entities sind die dynamischen Objekte, die Akteure, Monster, Fahrzeuge und andere Dinge, die sich in unsererr Spiele-Welt bewegen können. Zusätzlich zu den Parametern, die im Entity-Eigenschaftenpanel des WED eingestellt werden können, gibt es noch eine ganze Reihe weiterer Eigenschaften, die über Funktionen gesetzt, ausgewertet oder verändert werden können. Diese Eigenschaften beeinflussen das Aussehen der Entities, ihre Reaktionen auf gewisse Ereignisse und ihr Bewegungs- und Kollisionsverhalten. Einen Überblick erhalten Sie unter Entity Types.
Entities können auf drei verschiedene Arten erzeugt werden:
Im Level plazierte oder erzeugte Entities heissen Level-Entities, skript-definierte Entities sind entweder dem Bildschirm-Vordergrund zugeordnet (View-Entities) oder befinden sich im Hintergrund des Levels (Sky-Entities). View-Entities sind sind auch dann sichtbar, wenn gar kein Level geladen ist und ´überleben´Levelveränderungen. Sie lassen sich zum Darstellen von 3D-Elementen des User-Interfaces verwendenm, beispielsweise ein sich drehender Kompaß oder ein Lenkrad. Hier eine kleine Liste mit den Hauptunterschieden zwischen Level- View- oder Sky-Entities:
Level-Entities |
View-Entities |
Sky-Entities |
|
Entitity-Typen | Model, map, sprite, terrain | Model, sprite | Model, sprite |
Erstellt mit | WED, ent_create | ENTITY* struct, ent_createlayer | ENTITY* struct, ent_createlayer |
Benutzt für | Actors, Vehikel, Vegetation | 3D-Panel-Elemente | Sky, Hintergrund, Horizont |
Gerendert im | Level | Bildschirmvordergrund | Level-Hintergrund |
Aktiv wenn | INVISIBLE-Flag nicht gesetzt | SHOW-Flag gesetzt (flags2) | SHOW -Flag gesetzt (flags2) |
Entfernt durch | level_load, ent_remove | ent_remove, level_load* | ent_remove, level_load* |
Events | Kollision & Maus | nur Maus | keine |
Reihenfolge der Sichtbarkeit | View-Abstand | Layer | Layer, View-Abstand |
Koordinaten | Welt-Koordinaten | View-Koordinaten | View-Position, Welt-Drehung |
View-Entities werden folgendermaßen definiert:
ENTITY* compass_panel = { type = "compass.mdl"; layer = 2; // display above panels with layer 1 flags2 = SHOW; // visible on screen from the start
x = 100; // place 100 quants ahead of the view y = -50; // 50 to the right z = 0; // and center vertically }
Sky-Entities werden folgendermaßen definiert:
Sky-Entities werden, je nach den in der Definition gegebenen Flags, entweder dome-, cylinder- oder cube-gemappt. Ist kein solches Flag gesetzt, wird die Sky-Entity in den Levelhintergrund an gegebener x y z-Position gerendert. Auf diese Weise lassen sich Sonne, Mond oder andere Himmelsobjekte auf den Sky zeichnen. LC In lite-C werden Sky-Entities auf dieselbe Weise wie View-Entities definiert, nur dass ihr SKY-Flag gesetzt ist.
In einem Level ohne Map-Geometrie (Blocks) ist ein Sky, den sie im Skript aktivieren automatisch im Hintergrund sichtbar. In einem Level mit Map-Geometry (Blocks) ist der Sky nur dann sichtbar, wenn ein Block mit einer Sky-Oberfläche sichtbar ist. Wenn Sie diverse Sky-Layer benutzen, achten Sie darauf, jedweden Sky-Layer, der von anderen intransparenten Layers verdeckt ist abzuschalten und desaktivieren Sie auch die Hintergrundfarbe (sky_color). Damit vermeiden Sie unnötiges Rendern und halten die Framerate hoch.
ENTITY* skycube =
{
type = "skycube+6.tga"; // the image for a backdrop scene
flags2 = SKY | CUBE | SHOW; // sky cube, visible
}
SKY skycube =
{
type = "skycube+6.tga"; // the image for a backdrop scene
flags = CUBE | SHOW; // sky cube, visible
}