Rollende Kabeltrommel

In diesem Tutorial will ich das Erstellen folgender Szene beschreiben: Eine grosse Kabeltrommel auf einer Rampe (schiefe Ebene) blockiert den Durchgang zu einer Tür. Die Trommel ist links und rechts durch zwei Keile gegen abrollen gesichert. Der Player muss nun beide Keile zerschiessen, die Trommel setzt sich danach in Bewegung und gibt den Weg frei. Dabei soll die Trommel nicht wie ein Schlitten rutschen, sondern sich pysikalisch korrekt um die eigene Achse drehen.

bild2.jpg

Ausgangslage. Die Trommel wird durch 2 Kisten blockiert.

bild3.jpg

Die Kisten sind zerstört, die Trommel poltert die Ebene hinab

bild4.jpg

Ende der Sequenz, der Weg ist frei.

Wie ist dies zu realisieren?, nun das Ganze ist mit einer Hand voll Entities zu machen. Ich setze von Euch grundsätzliche Mappingkentnisse und die Bedienung Eures Editors, sei es nun WC, Radiant oder Quark voraus. Der eigentliche Raum, der spätere Durchgang und die schiefe Ebene sollten natürlich bereits fertig sein, mit solch rudimentären Abläufen wollen wir uns gar nicht erst aufhalten. Um die Trommel zu mappen, wählte ich einen 10-seitigen Zylinder und legte ihn auf die Seite. Genau in die Mitte der Trommel kommt noch ein beliebig kleiner Würfel, komplett mit der ORIGIN Textur belegt. Beide Brushes werden nun zu einem func_train gemacht:

func_train

  • Name - trommel
  • target - p1
  • move sound - rack elev (oder ein anderer Sound)
  • stop snd - rack stop
  • dmg - 200
  • avelocity - 120 0 0

Wenn Ihr verzweifelt in eurem func_train den Eintrag avelocity sucht, ist dies ganz normal. Er ist von Haus aus von Valve in der fgd mit mehr oder weniger Absicht „vergessen“ worden. Tragt ihn also manuell nach. Beim Quark geht dies mit der + Funktion, bei WC müsst Ihr „smartedit“ deaktivieren und den Key manuell im func_train nachtragen. Dieser Key ist eigentlich das ganze Geheimnis, um die Drehung des Trains um den Origin Brush zu aktivieren. Die 3 Parameter bedeuten y,z,x Achse, die dort eingetragenen Werte geben später die Drehgeschwindigkeit. In meiner Beispielmap rollt die Trommel von Westen nach Osten, also in X Richtung des Editors. Die Trommel muss sich dann um die Y Achse im Uhrzeigersinn drehen,deshalb ist der erste Eintrag bei avelocity mit einem positiven Wert beschaltet. Negative Werte drehen in die andere Richtung. Nicht benutzte z und x Werte füllt Ihr mit einer Null auf. Damit die Trommel im Spiel auch dargestellt wird und eine Strecke abrollt, benötigt Ihr noch drei path_corner

path_corner

  • name - p1
  • target - p2
  • speed - 120

path_corner

  • name - p2
  • target - p3
  • speed - 100

path_corner

  • name - p3
  • target - -
  • speed - -

Der erste path_corner (p1) wird an der Stelle plaziert, wo die Trommel am Anfang steht, also exakt in der Mitte des func_train, wo sich auch der origin brush befindet. Der zweite path_corner (p2) kommt an die Stelle, wo die Rampe aufhört, die Bewegung der Trommel also in die waagerechte übergeht und der letzte (p3) kommt vor die Wand, die letztendlich die Trommel zum stehenbringt. Denkt daran, daß der Train später mit dem Mittelpunkt seines Origin die path_corners anfährt, schließlich wollen wir die Trommel ja nicht im Boden versinken lassen. Nun haben wir den Kern der Sache eigentlich schon fertig. Wir haben eine Kabeltrommel, welche bei Antriggerung erst eine Rampe hinabrollt, dann waagerecht über den Boden ausrollt und schließlich an einer Mauer zum Stehen kommt. Wir müssen den Vorgang nur noch antriggern.

An dieser Stelle sei ein kurzer Ausflug zu Licht und Schatten auf func_trains angesagt. Diese Entities werden von den Compilern an jener Stelle berechnet, wo sie der Mapper im Editor plaziert hat und nicht unbedingt am Originalplatz, wo sie nachher im Game auftauchen (erstes path_corner). Die Trains ändern auch nicht während ihrer Fahrt dieses Aussehen, passen sich also nicht den jeweiligen Lichtverhältnissen an. Seht also zu, daß der Train beim mappen an einer Stelle sitzt, wo er auch einigermaßen gleichmässig beleuchtet wird. Profis bauen sich extra dafür einen gleichmässig weich ausgeleuchteten Raum irgendwo in die map.

Doch nun zurück zu unserer Aufgabe, wir wollten die Szene noch triggern. Dies ist einfach. 3 Entities erledigen dies für uns. Die Keile sind einfache func_breakables. Im Beispiel habe ich simple Kisten verwendet.

func_breakable

  • name - keil1
  • target - multi
  • health - 10
  • material - wood

func_breakable

  • name - keil2
  • target - multi
  • health - 10
  • material - wood

plaziert die Kisten oder Keile links und rechts unter die Trommel. nun brauchen wir nur noch einen multisource, setzt ihn irgendwo in die Nähe.

multisource

  • name - multi
  • target - trommel

Das war's schon, fertig ist die Szene. Der multisource hat die angenehme Eigenschaft, erst sein target zu aktivieren, wenn alle Entities die auf ihn zeigen, ausgelöst wurden. In unserem Fall sind dies die zwei Kisten, werden sie zerstört, kommt die Sache ins rollen.

..und so kann die Sache im Editor aussehen… (hier QuArk)

Zusammenfassung: 2 func_breakable zielen auf ein multisource, der auf einen func_train zielt. Dieser func_train fährt seine path_corners ab, wobei er sich durch den Zusatzkey „avelocity y z x“ um die eigene Achse dreht.

Bemerkungen

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_kabeltrommel.txt · Zuletzt geändert: 2006/06/19 14:18 von Richman