Community-Tutorials (Source)

Headcrab springt aus Fenster

Hey Leute,
Wie der Titel schon sagt möchte ich hier erklären,
wie man in HL2 eine Kopfkrabbe aus einem Fenster auf den Player springen lässt.

Prinzip:

7ml6-1.jpg

1. Der Player läuft durch einen Trigger (Auslöser).
2. Die Krabbe springt aus dem Fenster und
3. macht dabei die Glasscheibe kaputt.

Vorbereitung:

1. Zuerst bauen wir die Umgebung.

7ml6-2.jpg

- Ein Haus (ja, das auf dem Bild soll ein Haus darstellen:p) mit einem Hohlraum.
- Und ein Weg, der zum Haus führt.

2. Dann setzen wir den Startpunkt (info_player_start) auf den Weg - Weit genug entfernt vom Haus.

3. Die Krabbe (npc_headcrab) wird in den Hohlraum gesetzt.

4. Als nächstes setzen wir den Trigger, der später den Sprung der Krabbe aktiviert.

7ml6-3.jpg

- Man erstellt einen normalen Brush.
- Dann belegt man den Brush mit der Textur "tools/toolstrigger".
- In einem 2D-Fenster rechts-klickt man auf den Brush und klickt auf "Tie to Entity".
- Bei "class" wählt man dann "trigger_once" aus.

5. Jetzt setzen wir ein Entity mit dem Namen "npc_bullseye" in den Hohlraum.

- Die Krabbe wird später in Richtung des "npc_bullseye" springen.
- Je nachdem, wo sich das Entity befindet, springt die Krabbe aus dem Fenster.
- Wichtig ist, dass es sich im Hohlraum befindet, und zwar ziemlich nahe am Rand.

6. Es folgt ein weiteres Entity: "ai_relationship"

- Später stellen wir mit diesem Entity ein, dass die Krabbe auf das "npc_bullseye" springt.
- Wohin es gesetzt wird ist relativ egal.

7. Damit die Krabbe nicht sofort auf das "npc_bullseye" springt bauen wir ein kleines Hindernis.

7ml6-4.jpg

- Wir bauen einen Brush vor die Krabbe.
- Dann legen wir die "tools/toolsinvisible"-Textur auf den Brush.
- In einem 2D-Fenster klickt man wieder rechts auf den Brush und macht "Tie to Entity".
- Unter "class" wählen wir "func_brush".
- Wichtig ist, dass der Brush einen kleinen Abstand zu Decke, Boden und Wände hat:

7ml6-6.jpg

8. Jetzt kommt noch ein zweiter Trigger in die Map.

- Dafür erstellt man einen gleichgroßen Brush wie in Schritt 7 (wieder den Abstand beachten).
- Im 2D-Fenster: Rechtsklick auf Brush - Tie to Entity - class: trigger_once.
- Da der Trigger aber für die Krabbe gedacht ist, kommt unter "Flags" ein Häckchen bei "NPCs" hin.

9. Zum Schluss platzieren wir noch eine Glasscheibe, die den Hohlraum "verschließt".

7ml6-7.jpg

- Brush mit der Textur "tools/toolsnowdraw" erstellen.
- Nur die Seite, die zum Player schaut mit einer Glas-Textur belegen.
- Im 2D-Fenster: Rechtsklick auf Brush - Tie to Entity - class: func_breakable.

Das ganze sollte nun so aussehen:

7ml6-8.jpg

10. Um mit den nächsten Schritten fortzufahren, müssen wir unsere Objekte noch benennen:

Man benennt Objekte, indem man in einem 2D-Fenster mit einem Rechtsklick die Properties öffnet und unter "Name" den jeweiligen Namen eingibt.
Ich habe sie so benannt:

Trigger1 - Der Trigger auf dem Boden
Trigger2 - Der Trigger im Haus
Krabbe - Die Kopfkrabbe
Hindernis - Der Invisible-Brush, der die Krabbe blockiert
Ziel - das Entity "npc_bullseye"
Scheibe - Die Fensterscheibe

Umsetzung:

1. Um die Krabbe auf das "npc_bullseye" aufmerksam zu machen,
müssen wir in den Properties des "ai_relationship" folgendes einstellen:

Subject(s) - Krabbe
Target(s) - Ziel
Disposition - Hate

Die Krabbe "hasst" das "npc_bullseye" jetzt und versucht ständig das Entity anzuspringen.
Die Kopfkrabbe wird jedoch durch den Brush "Hindernis" blockiert.

2. Wenn wir nun den Trigger am Boden betreten, soll das Hindernis verschwinden.

Trigger1 - Properties - Outputs - Add:

OnTrigger | Hindernis | Kill | 0.00
Bei Betreten des Trigger1 verschwindet das Hindernis.

3. So, jetzt springt die Krabbe Richtung "npc_bullseye".
Jedoch, bevor sie das Entity erreicht, berührt die Krabbe den Trigger2.
Der Trigger2 bewirkt (1), dass das "npc_bullseye" verschwindet (wir klauen der Krabbe also den Keks vor der Nase weg :p)
und (2), dass die Scheibe zerspringt.

Trigger2 - Properties - Outputs - Add:

OnTrigger | Ziel | Kill | 0.00
Bei Betreten des Trigger2 verschwindet das "npc_bullseye".

Add:

OnTrigger | Scheibe | break | 0.00
Bei Betreten des Trigger2 zerspringt die Scheibe.

Fertig!

7ml6-9.jpg

Puh! Ist ja doch ziemlich lang geworden... :D
So, das war mein erstes Tutorial. Hoffe es hat euch gefallen.
Hier ist noch die Beispiel-Map: http://share-now.net/files/27665-testmap.vmf.html

Bei Fragen oder wenn ihr Fehler im Tutorial gefunden habt kontaktiert mich bitte!