Dieses Tutorial beschäftigt sich mit dem Erstellen von Zügen in Half-Life 2 (& mods). Prinzipiell gleicht der Aufbau den Zügen in Half-Life 1. Standartmäßig ist der Zug vom Player steuerbar (Geschwindigkeit in 5 Schritten regulierbar), was sich jedoch bei den Flags des func_tracktrains ändern lässt.
Was wir brauchen:
Wir beginnen mit den path_tracks. Die path_tracks stellen quasi die Checkpoints auf den Schienen des Zuges dar. Ein func_tracktrain nimmt immer den direkten Weg vom einen path_track zum nächsten, also sollte man seine Strecke so planen, dass keine Wände oder ähnliches im Weg sind, an welchen der Zug hängenbleiben könnte. Passiert der Zug einen dieser Checkpoints, wendet er sich direkt in Richtung des nächsten.
Wir erstellen ersteinmal ein path_track, und geben ihm folgende Einstellungen:
In unserem Beispiel geben path_track den Namen “path1“ und das next stop target “path2“. Warum, werdet ihr nachher noch sehen.
Alles andere können wir erst einmal so belassen.
Jetzt ziehen wir den erstellten path_track bei gedrückter Shift-Taste dahin, wo der nächste Checkpoint sein soll. Hier zeigt sich der Sinn der Namensgebung: Der neue Hammer ist intelligenter geworden. Er erkennt den Zusammenhang von Name und next stop target des ersten path_tracks und gibt dem nächsten direkt die neuen Einstellungen name “path2“ und next stop target “path3“. Das erspart uns viel Arbeit.
Außerdem verbindet der Hammer im Vorschau-Fenster zusammenhängende path_tracks mit einer Linie, so können wir sehen, ob unsere Strecke auch so verläuft, wie wir wollen.
Wenn wir unsere Strecke abschließen, achten wir darauf, dass das next stop target des letzten path_tracks wieder auf “path1“ zeigt. (Natürlich nur, wenn der Zug seine Rundfahrt über diesen Punkt vollziehen soll, die Fahrt kann natürlich auch über einen anderen Checkpoint fortgesetzt werden.)
Jetzt haben wir schonmal unsere Strecke. Fehlt also nur noch der Zug.
Unser Zug wird mit einem func_tracktrain festgelegt.
Prinzipiell kann jeder Brush (auch mehrere) zu einem Zug gemacht werden.
Hierauf ist beim Bauen des Zuges zu beachten:
path_track teleportiert. Beim Compile muss er wohl gut ausgeleuchtet sein, da er diese „Belichtung“ teilweise behält.func_tracktrain gemacht werden, da Half-Life 2 keinen einzelnen Brushes zu zwei Entities machen kann.
Wir brushen also unseren Zug wie wir ihn haben wollen, markieren alle Bestandteile und machen ihn zu einem func_tracktrain. Hier brauchen wir auch nicht, wie in Half-Life, einen Origin-Brush zu erstellen.
Das Origin eines Entities wird in Half-Life 2 mit einem Kreis dargestellt (im Vorschau-Fenster mit einer Kugel). Dieser befindet sich standartmäßig in der Mitte des Entities, kann aber auch verschoben oder in den Einstellungen des Entities festgelegt werden. Hierbei ist zu beachten, dass das Origin (wenn nicht anders eingestellt) der Punkt ist, der die path_tracks passiert.
Am besten verschiebt ihr das Origin in der Vertikalen, damit euer Zug später nicht im Boden steckt oder schwebt. Alternativ könnt ihr auch in den Einstellungen des func_tracktrain die height above track verändern.
Wir geben unserem func_tracktrain folgende Einstellungen:
path_track, von wo aus der Zug startet. Bei map-Start wird er dorthin teleportiert
Jetzt können wir noch entscheiden, ob unser Zug vom Player Steuerbar sein soll. Ist das nicht der Fall, setzten wir bei den Flags des func_tracktrains einen Haken bei “No User Control“. Ist er nicht Spielergesteuert, muss der Zug getriggert werden, damit er sich bewegt.
Das wars! Nun sollte der Zug, wenn nicht anders bestimmt, seine Runden über die path_tracks drehen. Viel Spaß beim mappen!
Eine weitere Anwendungsmöglichkeit für einen Zug ist der Einsatz in gescripteten Sequenzen, wie z.B. die Combine-Züge aus Half-Life 2.
Solche Models zu bewegen ist garnicht so schwer. Als erstes erstellen wir einen kleinen Brush und machen ihn zu einem func_tracktrain. Die Einstellungen dafür sollten folgendermaßen aussehen:
Letzteres brauchen wir, damit der Brush nicht sichtbar ist, weil den wollen wir ja nicht rumfliegen sehen.
Nun erstellen wir noch ein prop_dynamic mit den Einstellungen:
Wir platzieren das prop_dynamic „in“ dem func_tracktrain, idealerweise sollten die origin's der beiden Entities übereinander liegen. Wir achten auch darauf, dass das prop_dynamic in der Top-Ansicht nach Rechts ausgerichtet ist.
Es kann sein, dass ihr bei dem func_tracktrain noch die hight above track verändern müsst, damit das prop_dynamic auch auf dem Boden (/den Schienen) fährt, und nicht darüber schwebt.
Wird der func_tracktrain nun getriggert, scheint sich nur das model über die Map zu bewegen.