Erstellt euch eine Kanone und dessen Dreh- bzw Schwenkachsen. Nehmt nun den einen Teil eurer Kanone und macht daraus ein func_rotate. Ich habe es in meinem Beispiel X genannt.
Bei Flags solltet ihr
[X]Large Sound Radius
aktiviert haben. Alternativ kann man auch noch Not Solid aktivieren.
Wichtig: Ihr müsst aufpassen in welcher Ansicht ihr die Kanone erstellt. Jenachdem müsst ihr eventuell X Axis oder Y Axis aktivieren.
Das 2. func_rotation habe ich Y genannt. Hier setzt ihr ein Parent auf das andere func_rotation, da sich sonst die Position der Kanone nur nach oben und unten verändern lässt. Zusätzlich habe ich die Drehachse (den blauen Punkt) noch an die Stelle gesetzt, an die die Achse angebracht ist. Also an unserem Punkt vorne.
Vorteil: Die Kanone kann nicht vom Spieler geblockt werden.
Nachteil: Man kann durch die Kanone durchlaufen.
Dies könnt ihr je nach Bauart eurer Map selbst de- bzw. aktivieren.
Zu den anderen Einstellungen.
Hier braucht ihr lediglich den Max Rotation Speed anpassen. Je kleiner der Wert ist, desto langsamer und feiner könnt ihr die Kanone später steuern.
Die andere Achse stellt ihr genau so ein, wie die vorherige auch.
Als nächstes brauchen wir die logic_case. Diese Übersetzen später unsere Steuerung.
Das eine habe ich x-axis und das andere y-axis genannt.
In die Case tragt ihr dann bei beiden folgendes ein:
Bei dem Case x-axis müsst ihr in den Outputs nur den Target Name von Y auf X ändern.
Jetzt wäre unsere Kanone steuerbereit. Lediglich der Befehl fehlt, dass sie mit W-A-S-D gesteuert werden kann.
Dazu kommen wir jetzt.
Nehmt das game_ui und gebt ihm einen Namen. In meinem Beispiel ui_kanone.
Hier könnt ihr anfangs folgende Outputs eintragen.
Y-Axis = Die Steuerung in der Höhe. Mit den Tasten W und S.
X-Axis = Die Steuerung seitlich. Mit den Tasten A und D.
Was bewirkt dieser Befehl nun auf unser logic_case und dann auf unser func_rotating?
Um das zu erklären verwende ich mal ein einfaches Beispiel.
Ein Hubzylinder.
Fährt der Zylinder nun aus, also in einen positiven Wert, ist das Zeichen +. In unserem Fall Value (+)1.
Fährt der Zylinder nun ein, also in einen negativen Wert, ist das Zeichen -. In unserem Fall Value -1.
Bewegt sich der Zylinder weder ins Positive noch ins Negative, ist der Value-Wert gleich 0. Er macht nichts.
So verhält es sich in unserem Fall auch. Drücken wir W, gehen wir nach vorne, also einen positiven Wert. (Value (+)1)
Drücken wir S, gehen wir nach hinten, also einen negativen Wert. (Value -1)
Drücken wir weder W noch S, bleiben wir stehen, also den Wert "null". (Value 0)
Je nach Wert gibt das logic_case die Eingabe an das func_rotating weiter. Bei W einen Positiven, also nach oben.
Bei S einen Negativen, also nach unten. Bei keiner gedrückten Taste keinen Wert, es bleibt stehen.
Bei dem game_ui wird also folglich der Wert je nach gedrückter Taste in Form von Value´s ausgegeben.
Jetzt wäre unsere Kanone schonmal steuerbar.
Kommen wir zu den Kugeln.
Aus der Kugel, welche ihr erstellt habt, macht ihr ein func_physbox. Gebt ihm einen Namen. Bei mir ball und stellt die Strengt auf 100000000 oder einen ähnlichen Wert.
Um die Kugel erstellt ihr einen trigger_teleport. Gebt diesem einen Namen und ein Remote Destination.
Wichtig: Achtet darauf, dass die Kugel nicht in dem Brush der Kanone ist, da sie sonst blockiert und nicht feuert.
Gebt dem info_target den Namen eures Remote Destinations. Also kugel_spawn.
Setzt nun das point_template und gebt ihm den Namen ball_template.
Bei Template 1 tragt ihr nun den Namen eurer Kugel ein. Bei mir ball.
Setzt nun das logic_relay und gebt ihm einen Namen. Bei mir relay.
Hier setzt ihr folgende Einstellungen und Outputs.
Zur Erläuterung:
Wird jetzt das logic_relay angesprochen und aktiviert, so soll es die Kugel auf den info_target spawnen und danach sofort wieder deaktiviert werden, da man sonst unendlich viele Kugeln auf einmal feuern könnte.
Wieso nach 4 Sekunden wieder aktivieren?
Das aktivieren ist für die Funktion wichtig. Die 4 Sekunden sind lediglich die Zeit, die man warten muss, um erneut feuern zu können.
Aber welches Entity aktiviert jetzt unser logic_relay?
Das übernimmt das game_ui.
Diesem geben wir noch 2 weitere Outputs wie auf dem Bild zu sehen.
Wieso brauchen wir bei dem 2. Output ein Delay von 0.01?
Das brauchen wir aus dem Grund, da das Entity ja einen Start braucht. Würde man das Entity Triggern und Starten zugleich lassen, wird es das Triggern nicht ausführen, da es zeitgleich mit dem Start verbunden ist und somit
noch nicht reagieren kann.
Was ist PressedAttack?
PressedAttack ist, wenn ihr die Linke Maustaste drückt, um zu feuern. Dies löst unsere Kugel aus, die dann gespawned wird.
Jetzt fehlen uns nur noch 3 Entities. Der func_button, der trigger_hurt und der trigger_push.
Den trigger_push setzt ihr in die Kanone und Parented ihn daran. Parent in meinem Beispiel Y.
Hier nur die Push Direction einstellen. Je nach Ansicht und Bauweise der Kanone unterschiedlich.
Bei Flags noch
[X]Physics Objects
aktivieren und
[ ]Clients
deaktivieren.
Stellt hier den Speed of Push auf einen sehr hohen Wert. Je größer der Wert ist, je schneller schießt die Kugel heraus.
Irgendwie muss ja jetzt die Kugel wieder verschwinden, da zu viele Kugeln die Performance enorm schwachen und
das Spiel zu ruckeln anfangen kann.
Dies können wir ganz einfach mit dem trigger_hurt bewerkstelligen. Setzt hier einfach bei Damage und Damage Cap einen ebenfalls sehr großen Wert, damit die Kugel schnell zerstört wird.
Bei den Flags sollte hier nur
[X]Physics Objects
aktiviert sein.
Kommen wir zu unserem letzten Entity. Dem func_button.
Ihm müsst ihr nur den Output
OnPressed - ui_kanone - Activate
geben. Jetzt könnt ihr euch nicht mehr bewegen, aber die Kanone steuern und abfeuern.
MfG
Master of Terror
Geändert von Dmx6 (22.02.2011 um 23:06:19 Uhr)
Grund: Präfix hinzugefügt
Lesezeichen