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.jpg1. 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:
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.jpg10. 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.jpgPuh! 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!