Dynamischer Nebel
Im Mapeditor kann man (großflächigen) Nebel setzen (XD_Fog1 bis 3). Dieser ist allerdings statisch, man kann ihn bestenfalls abrupt während des Spiels erzeugen oder wieder entfernen.
In diesem Tutorial wird die Verwendung von dynamischem Nebel erklärt.
Dieser kann bei Bedarf sanft aufziehen und auch wieder verschwinden.
Hierzu werden Entities.XD_BlendingFog, ein bestimmtes Namensschema und 3 (undokumentierte) Funktionen verwendet.
Zunächst werden 2 Nebelgruppen mit je 2 enthaltenden Nebelfeldern an den Positionen Nebel1 bis 4 erstellt:
-- Gruppe 1 CreateEntity( 0, Entities.XD_BlendingFog, GetPosition( "Nebel1" ), "Nebel1_1" ); CreateEntity( 0, Entities.XD_BlendingFog, GetPosition( "Nebel2" ), "Nebel1_2" ); -- Gruppe 2 CreateEntity( 0, Entities.XD_BlendingFog, GetPosition( "Nebel3" ), "Nebel2_1" ); CreateEntity( 0, Entities.XD_BlendingFog, GetPosition( "Nebel4" ), "Nebel2_2" );
Die Position kann beliebig sein. Der Name muss aber diesem Schema folgen:
NameG_N.
Name ist der Name des Nebels, in diesem Fall einfach „Nebel“.
G ist die Gruppennummer. Diese beginnt bei 1. Jeder Nebel muss mindestens 2 Gruppen haben.
N ist die Nebelnummer in der Gruppe. Sie beginnt bei 1. Jede Gruppe muss mindestens einen Nebel haben.
Je mehr Gruppen ein Nebel hat, desto weicher, aber auch langsamer kann er ein und ausgeblendet werden. Hat er viele Gruppen, kann er sich in viele kleine „Nebelfetzen“ auflösen, die dann auch nach und nach verschwinden. Sind es wenige Gruppen, verschwindet der Nebel fast gleichmässig.
Die 4 Nebelentities sind jetzt erstellt und sichtbar. Nun muss festgelegt werden, daß es sich um ein dynamisches Nebelfeld handeln soll.
CreateDynamicFog( "Nebel", 0 );
Nun werden vom Nebel „Nebel“ 0 Gruppen angezeigt, er ist also nicht sichtbar.
Die erste Gruppe ist sichtbar, die zweite aber nicht:
CreateDynamicFog( "Nebel", 1 );
Beide Gruppen sind sichtbar
CreateDynamicFog( "Nebel", 2 );
Normalerweise sollte die Zahl zu Anfang auf 0 für „unsichtbar“, oder die Anzahl der Gruppen für „sichtbar“ gesetzt werden.
Der Nebel ist nun richtig eingestellt. Jetzt kann er dynamisch ein und ausgeblendet werden.
Nebel wird komplett (2 Gruppen) mit einer Geschwindigkeit von 5 Sekunden pro Gruppe eingeblendet:
ChangeDynamicFog( "Nebel", 2, 5 );
Nebel wird mit einer Geschwindigkeit von 10 Sekunden pro Gruppe ausgeblendet (0 Gruppen):
ChangeDynamicFog( "Nebel", 0, 10 );
Es ist nurnoch eine Gruppe sichtbar, die Änderung erfolgt mit 2 Sekunden pro Gruppe. Ob der Nebel nun ein/oder ausgeblendet wird, hängt davon ab, ob er vorher komplett sichtbar oder unsichtbar war:
ChangeDynamicFog( "Nebel", 1, 2 );
Hier eine erweiterte Beispielkarte dazu.
Einfach starten, und dann mit Ari zu einem der Türme laufen.
Nachdem der Nebel erstellt/entfernt wurde, wieder in die Ecke oder zum nächsten Turm gehen.
Der obere Turm verwendet dichten, linearen Nebel. Das ist praktisch, wenn eine Nebelwand auf den Spieler zurasen, oder vor dem Spieler aus einem Gebiet „flüchten“ soll.
Der untere Turm benutzt zufallsverteilten Nebel. Dieser wirkt deutlich natürlicher.