2D-Anzeigen mit Scripten programmieren ed
Allgemein ed
Das Koordinaten-System: (x=0)=links, (x=1)=rechts, (y=0)=oben, (y=1)=unten, (z=0)=vorne, (z=1)=hinten
Hiermit können Anzeigen realisiert werden, die unabhängig von der 3d-Welt sind. Sie eignen sich zum Beispiel für Lebenspunkt- und andere Statusanzeigen.
2D-Anzeigen ed
Stellt ein Bild, also ein Stück einer Textur, als ein rein 2-dimensionales Objekt am Bildschirm dar.
- Variablen-Typ picture
- Erstellen mit CreatePicture
- Löschen mit XDelete
xxx.Source gibt den Ausschnitt aus der Textur an
xxx.TCInverted (false) rotiert die Textur um 90°
xxx.Color.a wird als Transparenz (Sichtbarkeit) benutzt
Text-Anzeigen ed
Stellt einen String als Textelement auf dem Bildschirm dar.
- Variablen-Typ text
- Erstellen mit CreateText
- Löschen mit XDelete
xxx.Centric (false) richtet den Text mit xxx.Pos als Mittelpunkt aus
xxx.Vertical (false) ordnet die Buchstaben übereinander an
xxx.Color.a wird als Transparenz (Sichtbarkeit) benutzt
xxx.Size ist die Höhe der Zeichen pro Bildschirm-(Target)-Höhe
xxx.Font (DefaultFont) ist ein mit LoadXFont zu ladender BitMap-Font
3D-Modelle in den Anzeigen ed
Ein 3d-Modell wird auf die 2-dimensionale Bildschirm-Ebene projeziert.
- Variablen-Typ picture3d
- Erstellen mit CreatePicture3D
- Löschen mit XDelete
xxx.Relative (true) gibt an, ob ein [0,1][0,1]-Koordinatensystem oder Bildschirm-Pixel-Angaben benutzt werden sollen
xxx.Lighting (false) lässt die Modelle von Lichtquellen beleuchten
xxx.Matrix Transformations-Matrix von Modell- nach Anzeige-Koordinaten
xxx.model das eigentliche Modell
Anzeigen-Gruppierungen ed
Fassen mehrere der obigen Elemente zusammen, so dass kollektiv deren Farben und Positionen beeinflusst werden können.
- Variablen-Typ grouping
- Erstellen mit CreateGrouping
- Löschen mit XDelete
xxx.Pos ist die kollektive Position, die den Elementen hinzuaddiert werden soll
xxx.Color ist die farbe, mit der die Farben der Elemente multipliziert werden sollen
Die Variable CurrentGrouping legt fest, ob und zu welcher Gruppe neue Elemente beim Erstellen hinzugefügt werden sollen. (siehe Beispiel)
Beispiel ed
Beispiel:
void main()
// eine alles einhuellende Gruppe
grouping group = CreateGrouping( vector(0.2, 0.2, 0.1), // Position
White, // keine Einfaerbung
true ) // die folgenden Anzeigen der Gruppe hinzufuegen
// ein Bildchen
picture pic = CreatePicture( vector(0.1, 0.1, 0), // Position
0.2, 0.2, // Groesse relativ zum Bildschirm
LoadTexture("irgend_eine_textur.jpg"), // kein Ausschnitt, die komplette Textur verwenden
r01, // Textur-Ausschnitt ("komplett")
White ) // keine Einfaerbung
// Text
text txt = CreateText( vector(0.1, 0.2, 0), // Position
0.04, // Schriftgroesse (relativ zum Bildschirm)
Blue, // blau
"test" ) // eigentlicher Text
// ein Modell
matrix mat
MatrixRotation(mat, vector(0.5, 1.1, 0))
picture3d p3d = CreatePicture3D( LoadModel("irgend_ein_model"), // ein Modell
&mat, // die Drehung
0.1) // Bildschirm-Tiefe
// Gruppierung abschliessen
CurrentGrouping = NULL
float t = 0
while true
// Text-Anzeige fuer die Lebenspunkte verwenden
txt.Str = "Lebenspunkte: " + f2s(ego.Life, 1)
// die komplette Gruppe blinken lassen
t += elapsed * 2
group.Color.a = 0.7 + 0.3 * sin(t)
wait_of()