Hallo erstma^^,
Heute habe ich mir mal vorgenommen, das game_ui Entity zu erklären. Ist ein "relativ" einfaches Entity, mit dem man aber viel machen kann, z.B. Flugzeuge steuern (davon gibts bald ma n Screen im WIP Thread), aber nun zum Entity.
Als erstes brauchen wir etwas, dass unser game_ui auslöst, n Trigger z.B., ich hab n Schalter genommen. So dann brauchen wir noch unser game_ui Entity und "Möglichkeiten" die es auslöst.
Fangen wir mit dem Knopf an, per ToEntity zu nem func_button und unter Outputs stellen wir folgendes ein:
OnIn soll unser gameUI ausgelöst werden (so heisst das game_ui in meiner Map), also wenn man drückt wirds ausgelöst, und dann hab ich noch OnOut gameUI, dass es beim 2. mal drücken wieder aus geht. Dass wars mit dem Schalter.
Da unser game_ui ja was machen soll, habe ich mal 3 Explosionen genommen, die es auslöst, bei den Explosionen hab ich n Flag bei repeatable gemacht, damit man es auch öfters auslösen kann (env_explosion wird Hier beschrieben). Ich habe sie exp 1-3 genannt.
Nun zu dem game_ui. Es kann quasi alles auslösen durch drücken der Steuerungs oder Angriffs Tasten ( WASD, Mouse 1 und 2 bei mir). Man muss sich vorstellen, wenn das Entity aktiviert wird ist man eingeforen und beim drücken einer Taste aktiviert sich etwas (das einfrieren kann man auch unter Flags ändern, dazu später mehr). Ich habe in meiner Probe Map eingestellt, dass die eine Explosion Explodiert, wenn ich nach Links, Rechts oder gerade aus Drücke (wenn ich nach Links drücke, explodiert es Links).
Dies kann man ganz einfach einstellen. Dazu gehen wir bei unserem game_ui Entity unter Outputs. Bei MyOutputetName könnt ihr einstellen, durch was etwas passieren soll, z.B. durch Dürcken einer Taste (die einzelnen Sachen erklären sich eigentlich von selbst, wenn man ein bisschen Englisch kann (PressedForward, beim Vorwärts Drücken usw.)). Das mit den Axen (X, Y, Attack, Attack 2) erkläre ich hier nicht, da man dazu ein logic_compare braucht und man hier sonst gar nichts mehr blickt, bei Bedarf mach ich aber dafür ein neues Tutorial.
So jetzt habe ich meine Einstellung wie folgt gemacht:
PressedForward Explodiert es vor uns, PressedMoveLeft explodiert es Links neben uns und bei PressedMoveRight explodiert es Rechts von uns (hab 3 env_explosionen um uns herum verteilt und die Entsprechenden Namen gegeben).
Nun zu den Flags, die man bei einem game_ui einstellen kann.
Man kann mit Freeze Plyer den Spieler bewegungsunfähig machen (Springen kann man aber noch), mit Hide Weapon versteckt man das HUD und die Waffen, und mit +User Deactivates (wenn man benutzen drückt)und Jump Deactivates (wenn man springen drückt) stellt man ein, dass das Entity damit wieder beendet wird.
So das wars nun, wenn wir uns das im Spiel anschauen und den Knopf drücken müsste alles funktionieren:
So das waren die Grundkentnisse von dem Entity. Wer nun mehr erfahren möchte kann das alles im teil 2 auf seite 2.
So da ich von einen paar Leuten gebeten wurde, die Achsen zu erklären, werde ich das hier mal im 2. Teil des game_ui Tutoiral machen.
Als Grundwissen sollte man das erste Verstanden haben, da dieses hier ein bisschen komplizierter ist.
Ich nehm einfach mal meine Probe Map vom ersten Teil, ersetze die Explosionen durch Lichter, bei welchen ich den Flage intally Dark gesetzt habe.
In der Map sollte jetzt also 3 Lichter, ein Schalter, ein game_ui, 1 Player_start sein und ein Licht über uns, damit wir was sehen.
Was wir jetzt benötigen, damit wir die Axen funktion des game_ui benutzen können, ist ein logic_compare.
Ich habe es logic_compare_x genannt, da es später die X-Achse (Links, Rechts) steuern soll. Mehr müssen wir hier nicht verändern, also gehen wir zu den Outputs. Hier gibt es einiges zum einstellen. Hier können wir folgende Einstellungen machen:
OnEqualTo: Wenn etwas gleich ist
OnGreaterThan: wenn etwas größer ist
OnLessThan: wenn etwas kleiner ist und
NotEqualTo: wenn etwas nicht gleich ist (wird aber nicht benötigt)
Jetzt fragt man sich auf den ersten Blick, für was brauche wir das??
Ganz einfach, am bestne liest man mal Help des game_ui durch, da steht
XAxis |
Auf Deutsch heisst das, X Achse, Ein Ouptut der Eintritt, wenn der Spieler Links drückt (-1) oder rechts drück (1). Das würde heissen, wenn wir im logic_compare OnGreaterThan machen, geschiet etwas wenn der Spieler nach rechts drückt, bei OnLessThan, wenn der Spieler links drückt und bei OnEqualTo, wenn man die Tasten los lässt bzw. nichts drückt. Wenn man das Verstanden hat, kann man die Outputs des logic_compare bearbeiten.
Wir machen OnEqualTo, sprich wir drücken nichts. In dem Beispiel sollte dann das Licht in der Mitte leuchten, und die anderen aus, also machen wir 3 mal OnEqualTo, nehmen als Target light2 und wählen TurnOn, die anderen 2 Lichter, light und light3 sollen aus sein, also machen wir TurnOff. Das müsste dann so aussehen:
Nund machen wir OnGreaterThan, wenn man nach rechts drückt. Hier soll das rechte Licht, light3 genannt, angehen und alle anderen aus. Also machen wir bei Target die Lichter, bei light3 TurnOn und bei light und light2 TurnOff, nund dürfte alles so aussehen:
Als letztes benötigen wir noch im logic_compare OnLesserThan, wenn man nach links drückt. Da das Licht links angehen und alle ausgehen sollen, machen wir bei Targe light TurnOn und bei light2 und light3 TurnOff, wenn alles eingegeben würde dann schaut es so aus:
Das logic_compare ist jetzt fertig, es muss aber ja irgendwie ausgelöst werden, also zurück zum game_ui. Hier stellen wir einfach bei Outputs ein:
MyOutputeName XAxis,
Target Enteties Name logic_compare_x
Via this Input SetValueCompare
Das wars, im Spiel dürfte es dann so aussehen, wenn man den Schalte drückt und dann links, rechts:
Für die Y Achse würde es übrigens genau so gehen, nur das hier nach vorne 1 ist und nach hinten -1, bei den Attack Achsen ist drücken der Taste 1, -1 gibt es hier nicht, die bearbeitung würde bei den anderne Achsen genau so aussehen wie oben, desewegen hab ich die nicht mehr extra erklärt.
Falls noch Fragen bestehen, einfach hier dazu posten.
Bis zu meinem nächsten Tutorial,
Cya