Rollende Objekte

Womöglich kennt Ihr die Szene aus Blue-Shift, wo man Kabelrollen von einem Eisenbahnwagen runterrollen lassen muss, um einen Wissenschafter zu befreien. Die Meisten werden sich gewundert haben, wie das geht, denn in Half-Life war nie ein ähnlicher Effekt zu sehen. Doch es ist sogar in Half-Life möglich, und dank neusten FGDs sogar ohne grossen Aufwand.

Das Entity

Nach dem wir unsere Kabelrolle (oder was auch immer) gebaut haben, machen wir sie mit Tie to Entity zu einem Brush-Entity. Die vermeintlich „physikalische“ Kabelrolle ist jedoch nicht wirklich physikalisch, sondern nur ein simpler, und einfacher:


Bei diesem gibt es eine Einstellung Avelocity (x z y). Hier lässt sich mit drei Zahlen definieren, um welche Achse sich der func_train wie schnell dreht, wenn er sich bewegt. Falls Ihr eine FGD verwendet, welche diese Einstellung noch nicht enthält, könnt Ihr ganz einfach durch Ausschalten von SmartEdit eine neue Keyvalue hinzufügen:

Key Value
avelocity x z y


Wobei hier natürlich x z y gleich gehandhabt und eingetragen wird, wie wenn die Einstellung von der FGD gegeben ist.

Beachte: Da sich der func_train dreht, musst er einen Origin-Brush besitzen!

Also betrachten wir die Richtung in die unsere Kabelrolle rollen soll, und entnehmen daraus die Achse. Dies geht am einfachsten, in dem man die Kabelrolle in dem 2D-Fenster sucht, in der sie von der Seite zu sehen ist, die Fensterbezeichnung anschaut, und sich merkt, welcher der drei Buchstaben x, y oder z da fehlt. Bei front (y,z) währe es z.B. x.

Die Geschwindigkeit

Das Anpassen der Drehgeschwindigkeit - auch Winkelgeschwindigkeit genannt - relativ zur linearen Geschwindigkeit des func_trains ist ohne mathematischen Hintergrund ein langes Tüfteln und Ausprobieren. Aber wir hier machen das professionell.

Zur Berechnung der Drehgeschwindigkeit in °/s könnt Ihr diese Formel verwenden:

w = Winkelgeschwindigkeit [°/s]
v = Geschwindigkeit [Units/s]
r = Radius der Rolle [Units]
Pi = 3.141592

Wenn Ihr nun beispielsweise eine Rolle mit einem Durchmesser von 128 Units habt, also einen Radius von 64 Units, die sich mit 32 Units/s bewegen soll, dann gäbe das eine endgültige Winkelgeschwindigkeit von rund 28.65 °/s. Diesen Wert könnt Ihr dann bei Avelocity bei der entsprechenden Achse eintragen, im Fall mit der Y-Achse würde das dann so aussehen:

0 0 28.65

Da Ihr hier zwei variable Werte (Geschwindigkeit und Radius) habt, die von Fall zu Fall komplett anders sein können, ist es hier schwer, auf eine Faustregel zurückgreifen zu können. Eine Faustregel für die Winkelgeschwindigkeit ist also noch nicht bekannt.

Ingame

Ihr habt nun die Winkelgeschwindigkeit Eurer Rolle berechnet und eingetragen. Der Weg den die Rolle „rollen“ soll, habt Ihr bereits mit path_corner ausgebaut, und funktioniert. Alle anderen Einstellungen des func_trains habt Ihr auch bereits Euren wünschen angepasst. Dann könnt Ihr Eure Map kompilieren, und Ingame bewundern, welch Meisterwerk Ihr wieder vollbracht habt.

Bemerkungen

  • Es ist nicht bekannt, dass sich die Winkelgeschwindigkeit des func_trains während der Fahrt ändern lässt.
  • Fährt Euer func_train z.B. um eine Ecke, so rollt die Rolle nicht automatisch in die richtige Richtung. Damit Eure Rolle oder was auch immer beispielsweise eine Richtungsänderung machen kann, müsst Ihr einen zweiten func_train verwenden, der in die zweite Richtung rollt. Gäbe es eine Möglichkeit die Winkelgeschwindigkeit während der func_train fährt zu ändern, würde dies wegfallen.
  • Falls Eure Rolle mal rückwärts rollt, obwohl sich der func_train vorwärts bewegt, macht einfach ein Minus (-) vor die Winkelgeschwindigkeit setzen.
Die Verwendung aller Dokumente einschließlich der Abbildungen ausschließlich zu nichtkommerziellen Zwecken. Verbreitung des Dokuments auf Speichermedien, (insbesondere auf CD-ROMs als Beilage zu Zeitschriften und Magazinen oder sog. "Mission-Packs" etc.) ist untersagt.
 
half-life/tutorials/rollende_objekte.txt · Zuletzt geändert: 2006/06/20 14:33 von Richman