Crytek-HQ.com

Levelzeit

Levelzeit - Tutorial

Ein leicht erweitertes Tutorial für die Levelzeit und die dazugehörigen Helfer.


Zuerst erstellt man einen Bereich (Area) in den man treten muss damit sich die Zeit ändert.

Tipp: Am besten achtet man vorher darauf dass oben in der Leiste [Snap to Terrain] aktiviert ist, rechts neben "XY"

Dafür geht man in der RollupBar auf "Area - Shape" 1 und platziert Punkt für Punkt. Abschließen kann man die Area mit einem Doppelklick.

Unter "Height" 2 sollte man eine Höhe festlegen, im Beispiel habe ich "4" gewählt. Danach platziert man einen AreaTrigger, zu finden in der RollupBar unter "Entity - Triggers - AreaTrigger" 3. Wo man ihn setzt ist eigentlich egal, der Übersichtlichkeit halber empfehle ich aber in dem Shape oder in der Nähe.

Wählt man jetzt den Shape aus kann man in den "ShapeParameters" über "Pick" 4 den "AreaTrigger" auswählen indem man bei aktivierter "Pick"-Funktion im 3D Fenster draufklickt.

Tipp: sollte der AreaTrigger schwer auszuwählen zu sein, dann kann man mit gedrückter Leertaste den Namen einblenden lassen.




Nun erstellen wir den Flowgraph…

Dafür muss man den "AreaTrigger" auswählen, was man wahlweise über das 3D Fenster tun kann oder indem man einen Doppelklick auf den Namen im "Target-Fenster" des Shapes macht.

Jetzt klickt man unter [FlowGraph] auf [Create] wie im Bild zu sehen ist.



Jetzt wird man aufgefordert einen Namen einzugeben bzw. einen neuen FlowGraph zu erstellen falls man bereits welche hat.

Erscheint die graue Fläche so macht man einen Rechtsklick auf diese und wählt [Add Selected Entity]. Sollte nichts oder nur ein kleiner Punkt erscheinen so muss man danach erneut einen Rechtsklick machen und [Fit Graph To View] auswählen.


Hat man jetzt seinen "AreaTrigger", so legt man besser erst mal die Startzeit fest. Dafür erstellt man über Rechtsklick-> [Add Node] folgende Nodes:
Misc:Start
Time:TimeOfDay


Wählt man das "TimeOfDay" aus, so kann man rechts bei den "Inputs" die Zeit (Time) einstellen. Im Beispiel habe ich dafür 6Uhr ausgewählt.

Am besten legt man auch die Geschwindigkeit (Speed) fest. Bei einem Wert von "1" rast die Sonne so schnell dass einem schwindelig wird, da empfiehlt sich eher ein Wert von "0.0025" oder einfach "0" falls sich die Zeit gar nicht ändern soll.

Damit sich das Ganze auch auswirkt muss man den Output vom "Misc:Start" mit den Inputs "SetTime" und "SetSpeed" verbinden.

Nun wird bei Spielstart die Zeit und die Geschwindigkeit auf die jeweils gesetzten Werte gestellt.


Jetzt zum AreaTrigger…

Erst mal fügt man über Rechtsklick und [Add Node] folgende Nodes ein:
1x Logic:Any
2xTimeOfDay
1xTime: Delay
1xMathLess


Danach verbindet man sie wie im Bild zu sehen:




Erklärung:
Betritt man das Shape dass an den AreaTrigger gekoppelt ist so wird ein "Enter" Signal herausgegeben. Dieses "Enter" geht über das "Logic:Any" in das obere "TimeOfDay" und fragt über "GetTime" die aktuelle Uhrzeit ab. Diese abgefragte Uhrzeit wird über "CurTime" an die "Math:Less" Node herausgegeben.

Die "Math:Less" Node überprüft ob der eingehende Wert niedriger als die bei "B" eingetragene Zeit ist. Da ich bei "B" 18 eingetragen habe überprüft die Node praktisch ob es noch früher wie 18Uhr ist.

Trifft dies zu, so wird der "True"-Ausgang ausgelöst, welcher wiederrum auf das auf "0.25" gesetzte "SetSpeed" des "TimeOfDay" gelegt ist. Die Geschwindigkeit der Zeit wird also im Gegensatz zum vorherigen "0.0025" verhundertfacht. Gleichzeitig wird über das "Time: Delay" nach einer Sekunde die Abfrage wiederholt.

Sollte die Zeit Später als 18Uhr sein, so wird der "False" Wert getriggert und die zeit wieder auf den ursprünglichen Wert gesetzt. Man hätte es auch zurück zum ersten "TimeOfDay" führen können, aber so kann man auch einen anderen Wert wählen.


Zusatz:
Will man die Zeit überprüfen um z.B. zu sehen ob der Trigger funktioniert, so kann man sich wie im angehängten Bild eine einfache "Uhr" einfügen. Die Zeit wird dadurch jede Sekunde aktualisiert.




Tipp: Will man diese Uhr nur im Editor und nicht im Spiel selbst haben, so kann man wie im Bild bei der "Misc:Start" Node den Wert "InGame" auf "false" setzen, dann wird der Trigger nur im Editor ausgelöst, nicht aber im gestarteten Spiel. Tutorial von "Biggreuda".

Website Copyright © by 4thDimension Networking ®

Top Desktop version