Community-Tutorials (Source)

Steuerbarer Hubschrauber

Hallo ihr Mapper! Bei meinem 2. TuT werde ich euch zeigen, wie man einen Hubschrauber (oder auch 2 *gg*) per Steuerung fliegen lassen kann. In meiner Beispielmap sind gleich 2 Helikopter zum steuern, jedoch erkläre ich es hier nur für einen (die Anzahl der Entities beziehen sich auf ein Helikopter). Wenn ihr auch 2 machen wollt, braucht ihr dementsprechend die doppelte Anzahl an Entities! Optional habe ich die Helikopter mit einer Kamera ausgestattet. Dies ist aber für das Fliegen des Hubschraubers nicht notwendig!

Dafür brauchen wir:

- Einen großen Raum

djflyer009.jpg

Ein großer leer Raum mit einem Landeplatz

- Ein Hubschrauber, der ungefähr so aussehen könnte

djflyer010.jpg
oder
djflyer011.jpg

*ich muß gestehen, das beide Helikopter nicht von mir gebastelt worden sind ;)

Pflicht-Entities
- 1 "game_ui", 3 "logic_compare", 5 "phys_thruster", 1 "phys_keepupright" und 1 "func_button"

optionale Entities
- 1 "point_camera", 1 "info_camera_link", 1 "func_wall", 1 "ambient_generic", 1 "func_button" und 1 "env_sprite"

OK, dann fangen wir mal an. Den Hubschrauber (aus erstellten Brushs) makieren wir komplett und machen diesen zu einer "func_physbox". Klickt dazu in einem 2D-Fenster mit der rechten Maustatse auf die markierten Brushs und wählt den Menüeintrag "Tie to Entity". Da wo nun "func_detail" steht, wählt ihr "func_physbox".

djflyer012.jpg

makierten Brushs als "func_physbox"

Alle Einstellungen (inkl. FLAGS) könnt ihr so lassen, bis auf das Feld Name. In meinem Bsp. hab ich "Hubschrauber" genommen.
Habt ihr ein Propella erstellt, gehört dieser nicht mit zur "func_physbox", es sei denn, er soll sich nicht drehen. Wenn doch, markiert ihr alle Teile des Propellas und wählt hier das Entity "func_rotating".

djflyer013.jpg

makierten Brushs als "func_rotating"

Dort nehmen wir folgende Einstellungen vor:
Name = frei wählbar (bei mir "Hubschrauber-großes_Rotorblatt02")
Parent = hier wählt ihr den Namen eures Helikopters aus (in meinem Fall "Hubschauber")
Max Rotation Speed = die Drehgeschwindigkeit (ich habe "600")
Rotating Sound Wave = der Sound, der beim drehen abgespielt werden soll (mein Sound heißt "ambient/tankidle2.wav"
Blocking Damage = wie hoch der Schaden beim blocken sein soll (mein Wert beträgt "200")

Registerkarte FLAGS ---> aktiviert
Start on = Sound von Anfang an
Large Sound Radius = Großer Radius des Sounds

So, nun kommen wir zu den 5 "phys_thruster" (1 - 5) & dem "phys_keepupright" (6). Diese platzieren in etwa wie auf den Bildern.

djflyer014.jpg
und
djflyer015.jpg

Platzierung der 5 "phys_thruster" (1-5), der "point_camera" (7) und dem "phys_keppupright" (6)

Hier die Einstellungen der "phys_thruster":
Name = frei wählbar (In meinem Fall hab ich sie nach ihrer Richtung genannt. Z.B. für den "phys_thruster" 2 hab ich "Hubschrauberschub-VORWÄRTS", da dieser zum vorwärts fliegen gedacht ist und für "phys_thruster" 1 hab ich "Hubschrauberschub-RECHTS", da er den Helikopter nach rechts steuern soll usw.)
Attached Object = Da wählt ihr den Namen eures Hubschraubers (also bei mir "Hubschrauber")
Force = die Stärke des Drucks (in meinem Fall hab ich für den rechten (1) & den linken (3) "phys_thruster" den Wert 180, für vorwärts (2) & rückwärts (5) den Wert 400 und für hoch (4) den Wert 2000, da dieser ja den schweren Helikopter nach oben tragen muß)
Pitch Yaw Roll (YZX) = siehe Bild

djflyer016.jpg

Beachte hier die Ausrichtung der einzelnen "phys_thruster" auf der TOP-Ansicht (x/y)!!! "phys_thruster" 1 zeigt nach rechts. Seine Einstellung hat bei mir demnach bei Pitch Yaw Roll (YZX) "0 270 0", "phys_thruster" 2 = "0 0 0 ", "phys_thruster" 3 = "0 90 0" und "phys_thruster" 5 = "0 180 0".
Da "phys_thruster" 4 nach oben gehen soll, hat er die Einstellung "-90 0 0".

Registerkarte FLAGS ---> aktiviert (gilt für alle 5)
Apple Force
Apple Torque
Orient Locally
(dieses wird bei dem "phys_thruster" 4, also das den Hubschrauber nach oben fliegen lässt, deaktiviert)
Ignore Mass

die Einstellungen des "phys_keepupright":
Target Entity = hier wählt ihr wieder euren Hubschrauber (bei mir ist heißt er immer noch "Hubschrauber")
Angular Limit = 100 hält den Helikopter in waagrechter Stellung, so das er beim hochfliegen nicht nach oben kippt.

Ändert den Wert mal in 15, dann werdet ihr sehen, was passiert :D

DJFlyer

Solltet ihr dieses Entity weglassen, wird euer Helikopter akrobatische Flüge machen. Probiert es aus. Ihr werdet es sehen, das es nötig ist *gg*

Optional hab ich unter den Helikopter ein "ambient_generic"-Entity gesetzt. Dieses hat folgende Einstellungen:
Sound Name = der zu abspielende Sound (bei mir: npc/attack_helicopter/aheli_rotor_loop1.wav)
Max Audible Distance = Die Reichweite des Sounds (in meinem Bsp. hat es den Wert 8000)
SourceEntityName = Der Sound soll mit dem Hubschrauber ja mit fliegen, also den Namen eures Helikopters (mein Name kennt ihr ja mittlerweile *gg*)

Registerkarte FLAGS ---> deaktiviert das Häkchen bei Start Silent (so dass der Sound von Anfang an hörbar ist) und das Häkchen bei Is NOT Looped (so das er sich ständig wiederholt)

Ebenfalls optional habe ich eine Kamera auf den Helikopter gebaut, so das man auch sieht, wohin er fliegt. Dazu nehmen wir das "point_camera"-Entity und platzieren es direkt vorne auf den Helikopter (siehe Bild weiter oben [7]). Diese bekommt folgende Einstellungen:
Parent = Sie solls sich auch mit dem Helikopter bewegen (in meinem Falle wieder der Name "Hubschrauber")
Name = frei wählbar (ich nannte sie "kamera01")
FOV = den Blickwinkel der Kamera in Grad (bei mir 100)

Registerkarte FLAGS ---> aktiviert
Start off (sollte nur aktiviert werden, wenn die Kamera beim Start aus sein soll, was beim meinem 2. Hubschrauber der Fall ist)

So, unser Hubschrauber wäre soweit. Gehen wir nun über zur Steuerungszentrale. Nun brauchen wir das "game_ui"-Entity, die 3 "logic_compare" und einen Button, der es aktiviert (einer der Außenbuttons, denn die in der Mitte sind für den Bildwechsel zuständig). In meinem Beispiel sieht das so aus:

djflyer017.jpg

ich hatte ja oben erwähnt, das es bei mir 2 Helikopter gibt. Das blau Markierte ist für den Hubschrauber 1 und das Rote für Nummer 2. Hinter der Wand, an dem der Monitor hängt, habe ich das "game_ui" und die 3 "logic_compare" platziert

djflyer018.jpg

und so sehen die 2 Steuerungszentralen für die Hubschrauber (die außenstehende Teile) im Spiel aus. In der Mitte sind 2 Buttons für das Bild zu wechseln. Momentan ist die Kamera am ersten Hubschrauber aktiv. Das wird durch das rote Licht kenntlich gemacht

Nehmen wir jetzt die einzelnen Einstellungen der Entities vor. Fangen wir von vorne an, also mit dem Button. Bastelt euch aus Brushs einen Button und macht diesen zu einem "func_button". Dann nehmt ihr folgende Einstellungen vor:
Name = frei wählbar (bei meinem Bsp. heißt er "Button_Steuerung")

Registerkarte FLAGS ---> aktiviert
Don't Move = soll ich in meinem Fall nicht bewegen
Use Activates = soll durch drücken der Aktionstaste ausgelöst werden

Registerkarte OUTPUTS
siehe weiter unten

Nun die Einstellungen von dem "game_ui"-Enity:
Name = frei wählbar (bei mir heißt es "Steuerung")

Registerkarte FLAGS
Lassen wir so wie es im Standard eingestellt ist

Registerkarte OUTPUTS
siehe weiter unten

Und nun zu den "logic_compare" 's:
Das Namensfeld ist die einzige Einstellung (außer die OUTPUTS, die später gemacht werden). Hier kann wieder frei gewählt werden. In meinem Fall habe ich jedes nach seiner Achse benannt ("Hubschrauber_compareX", "Hubschrauber_compareY" & "Hubschrauber_compareZ").

Und hier liste ich euch die OUTPUTS der einzelnen Entities auf, die für das Fliegen des Hubschraubers benötigt werden:

djflyer019.jpg
Der Button
djflyer020.jpg
das "game_ui"-Entity
djflyer021.jpg
das "logic_compare" für die X-Achse
djflyer022.jpg
das "logic_compare" für die Y-Achse
djflyer023.jpg
das "logic_compare" für die Z-Achse

Damit kann unser Helikopter jetzt fliegen! Die linke Maustaste (siehe bei "game_ui"-OUTPUTS den Eintrag "AttackAxis") lässt den Hubschrauber abheben. Und mit den Tasten, mit dem du deine Spielfigur bewegst, steuerst du den Hubschrauber.
Für alle die das mit der Kamera wollen, sollten weiterlesen. Für die Anderen ist das TuT vorbei und ihr könnt weiter unten euch die Map runterladen ;o)

Als erstes bauen wir aus einem Brush eine Wand, an dem dann der Monitor daran befestigt ist. Dann basteln wir uns einen Monitor (ich hab einen Brush mit der Textur "models/props/cs_office/tv_plasma" belegt). Vor diesen Brush erstellen wir einen etwas kleineren Brush, der mit der Vorderseite die Textur "dev/dev_tvmonitornonoise" hat und drücken den Button "Fix" (was sehr wichtig ist!!!!). Diesen Brush machen wir zu einem "func_wall"-Entity.

djflyer024.jpg

erst die Wand, dann der Monitor und davor das "func_wall"

Dies bekommt bei den Einstellungen nur einen Namen zugeteilt (in meinem Fall heißt er "monitor01").
Rechts und links vom Monitor habe ich die "info_camera_link" 's platziert (siehe Bild):

djflyer025.jpg

Das Blauumrandete ist alles für Helikopter Nr. 1 (Steuerung + Kamera) und das Rote für Helikopter Nr. 2! Habt ihr nur ein Helikopter, dann benötigt ihr jeweils nur eins von jedem hier erwähntem Entity

Folgende Einstellung nehmen wir für das "info_camera_link" vor:
Name = frei wählbar (meins heißt "infocam01" & für das 2te "infocam02")
Entity Whose Material... = hier wählt ihr euren Brush, der zu "func_wall" gemacht wurde (in meiner Testrunde ist es "monitor01")
Camera Name = hier wählt ihr Kamera (in meinem Fall "kamera01" & für das 2te "kamera02")

Habt ihr auch 2 Kameras, dann geht es für euch weiter. Ansonsten springt an das Ende des TuT's für die Beispiel-Map down zu loaden ;)

Nun brauchen wir 2 Buttons, die für das Umschalten der Kameras zuständig sind. Erstellt 2 Brushs und macht jedem zu einem "func_button". Geht gleich zu der Registerkarte FLAGS und macht einen Haken bei Don't Move. Natürlich nur dann, wenn sich euer Button auch nicht bewegen soll. Die OUTPUTS kommen wieder als Pic weiter unten.
Nun platzieren wir in jeden dieser 2 Buttons ein Entity "env_sprite"

djflyer026.jpg

die 2 Buttons mit je einem "env_sprite"-Entity

und tätigen folgende Einstellung:
Name = frei wählbar (in meinem Fall "Buttonlight01" & "Buttonlight02")
Render Mode = World Space Glow
FX Color (R G B) = bestimmt die Farbe (in meinem Beispiel nahm ich rot, also "255 0 0")

Registerkarte FLAGS ---> aktiviert
Start on (ich habe bei "Buttonlight01" den Haken gesetzt und bei "Buttonlight02" nicht, da ja die erste Kamera aktiv ist und somit auch das Lämpchen von dem ersten Button leuchtet)

So, jetzt nur noch die OUTPUTS von den 2 Buttons für die Kameras, dann haben wir es:

djflyer027.jpg
Der Kamerabutton 01
djflyer028.jpg
Der Kamerabutton 02

Fertig! Jetzt könnt ihr euren/eure Hubschrauber testen. Spielt noch ein wenig mit den Einstellungen rum, damit ihr wisst, was für eine Bedeutung die haben. Ich hoffe, das euch das TuT gefallen hat und es nicht zu kompliziert ist. In diesem Sinne......bis zum nächsten TuT/Thread *gg*

djflyer029.jpg

Hätte ich fast vergessen. So sieht's aus, wenn man mit einem Helikopter in den Roter des anderen reinfliegt *lach*

DJ Flyer
P.S. Wenn ihr ein Weilchen mit dem Helikopter rum experimentiert habt, könnt ihr bald als guter Klippenspringer durchgehen *gg*

djflyer030.jpg

EDIT & WICHTIG:Was ich vergessen habe zu schreiben. Nicht jeder hat ja die gleichen Einstellungen im Hammer wie ich *lach*. Um die Kamera zu benutzen, müßt ihr einen Eintrag im Hammer dazufügen. Geht im Hamer oben auf "Tools" und dann auf Options...". Dort müßt ihr den rotumrandeten Eintrag auf dem folgendem Bild machen:

Hammer.jpg

Wenn dieser bei euch noch nicht ist, klickt auf "add" und fügt diesen dann hinzu!