Benötigt: Hammer und ein bisschen Grundwissen
und lest mal dieses Super Tutorial von JimWest
Für alle die es brauchen - hier wird noch mal path_track erklärt
Einleitung:
Wir erstellen hier einen Kran, den Man frei in den Achsen X und Y bewegen kann. Mit dem setparent Output kann man noch Objekte an den Kran anhängen. (Das Objekt, was man steuern will, muss kein Model sein; es muss nur eine Parentfunktion besitzen)
Man kann diese Steuerung auch für einen steuerbaren Scheinwerfer oder Plattformen, die man an den richtigen Platz bewegen muss, um weiterzukommen, gebrauchen.
Hier mal ein Bild damit ihr versteht was ich meine. Man steuert mit den Pfeiltasten. So lange man drückt fährt der Kran in eine richtung.
Allerdings gibt es bei dem Beispiel mit dem Kran 3 Haken:
1. Man kann das Objekt immer anhängen, auch wenn der Kran meterweit weg ist.
Das System aus HL2 kann man in CSS nicht benutzen.
2. Wenn man das Objekt wieder freisetzt, fällt es nicht runter, da die Parentfunktion nur für dynamic Models ist und nicht für Physik Models. (func_physbox hat eine Parentfunktion; damit müsste es gehen)
3. Der Kran hängt auch nicht Physikalisch korrekt an einem Seil, da kein phys_* Entity eine Parent Funktion hat.
Leider habe ich es nicht geschafft, noch die Z Achse mit einzubinden. (X und Z Achsen wären aber möglich…. es hängt nur an der 3. Achse) Nach 2 Tagen hab ich es jetzt aufgegeben. Vielleicht geht es auch gar nicht.
Tutorial:
Baut euch einen func_button, der ein game_ui auslöst. Mein game_ui trägt den Namen „steuerung“.
Setzt 2 logic_compare daneben und gebt ihnen Namen. (logic;logic2)
Nun wählt ihr das game_ui wieder an und gebt folgende Outputs ein.
My Output named: X Axis Target Entitys named: logic Via this Input: SetValueCompare My Output named: Y Axis Target Entitys named: logic2 Via this Input: SetValueCompare |
(Das Add Parent wird später noch erklärt)
Jetzt machen wir einen kleinen Sprung und platzieren erstmal unser Kransystem. Also setzt ihr erstmal euer Entity, dass ihr bewegen wollt. (func_brush, prop_dynamic;point_spotlight)
Nun zieht ihr einen Brush drum und macht ihn zu einem func_tracktrain.
(1 Seite trigger und die anderen nodraw - sonst ist er sichtbar)
(Name: track)
Jetzt 3 path_tracks. Das 1. sollte auf dem 0 Punkt des zu bewegenden Entitys sitzen und den Namen move_y_2 tragen. Jetzt noch jeweils 1 zu beiden Richtungen in die sich das Entity später mal bewegen soll. Wenn ihr die Path_tracks nach oben gehen lasst, wird auch das Entity nach oben fahren. Meine gehen vom Player aus nach rechts und links vom 1. Path_track weg. (move_y_1;move_y_3)
Jetzt diese 3 verbinden mit next_key_frame und immer die nächst größer Zahl. Also 1 hat den nächsten Punkt auf 2 und 2 auf 3.
Die 3 path_tracks bekommen den Parent: track2
Einstellungen des func_tracktrain.
Name: track First Stop Target: move_y_2 Parent: track2 (erstellen wir gleich) |
Einstellungen des 2. func_tracktrain
Name:track2 First Stop Target: move_x_2 |
Jetzt selektiert ihr noch mal das (oder mehrere) Objekt , dass ihr bewegen wollt und gebt ihm das Parent “track”
Das war jetzt wirklich kompliziert - wenn es unverständlich ist kann ich auch noch mal nachbessern.
Kleiner Sprung zurück zu den logic_compare…
Output von logic
My Output named: On_Equal_to Target Entitys: track Via this Input: SetSpeedDir With a parameter override of: 0 My Output named: On_less_than Target Entitys: track Via this Input: SetSpeedDir With a parameter override of: -25 My Output named: On_Greater_than Target Entitys: track Via this Input: SetSpeedDir With a paramete override of:25 |
Wenn ihr jetzt kompiliert und auf den oben erstellen Button drückt, könnt ihr euch nicht mehr bewegen. Aber ihr könnt mit den Richtungstasten den Kran bewegen.
Objekte an den Kran hängen
Einfach ein prop_dynamic einfügen und im gameui folgende Einstellungen vornehmen:
My Output Named: Pressed Attack Target Entitys: name des Models Via this Input: Set Parent With a parameter override of: name des greifers oder track |
Und noch einen zum loslassen mit Pressed Attack2 und nicht Set Parent sondern einfach Clear Parent. Das System sollte jedem nun klar sein.