Ich habe das jetzt so gestaltet dass, man nicht verletzt werden kann wenn die Wand steht.
Also der normale weg Wand – Trigger_hurt an die Seite klatschen gefällt mir irgendwie nicht.
Da es irgendwie dämlich ist wenn man gegen ne Wand läuft und stirbt/verletzt wird.
Daher habe ich den Trigger jetzt in die Wand gesetzt bündig mit vorderkante,
Vorteil einem passiert nichts wenn die Wand/Tür steht und man gegen läuft.
Da sich der Trigger nicht alleine bewegen lässt, habe ich noch ein script_origin dazu gepackt
Beide mit eigenem targetname.
Erst mal das Skript
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
|
platte01_move()
{
plattenmodel_01 = getent ("platte01", "targetname");
platte01_origin01 = getent ("platte01_dmg_origin_01", "targetname");
platte01_origin02 = getent ("platte01_dmg_origin_02", "targetname");
platte01_dmg01 = getent ("platte01_dmg_01", "targetname");
platte01_dmg02 = getent ("platte01_dmg_02", "targetname");
platte01_dmg01 linkto(platte01_origin01);
platte01_dmg02 linkto(platte01_origin02);
level.plattenMoving = true;
level.platten01Moving = true;
way = 112;
speed = 5;
speed_dmg = 1.2;
if (level.pos_platte01) {
platte01_origin02 linkto(plattenmodel_01);
plattenmodel_01 movex (way - (way * 2), speed);
platte01_origin01 movex (way - (way * 2), speed * speed_dmg);
plattenmodel_01 waittill ("movedone");
platte01_origin02 unlink();
level.pos_platte01 = false;
}
else
{
platte01_origin01 linkto(plattenmodel_01);
plattenmodel_01 movex (way, speed);
platte01_origin02 movex (way , speed * speed_dmg);
plattenmodel_01 waittill ("movedone");
platte01_origin01 unlink();
level.pos_platte01 = true;
}
level.plattenMoving = false;
level.platten01Moving = false;
}
|
|
Da wird jetzt der Trigger an den origin gehaftet und der origin bewegt
(linkto : Zeile 12 u. 13 Bewegung: Zeile 32 und 48). Da es eine schiebende Bewegung ist,
habe ich den Trigger noch etwas abgebremst was man einstellen kann wenn man die Zahl von speed_dmg erhöht oder verringert
(1 = selbe zeit wie wand, <1 Trigger ist langsamer wie Wand, >1 Trigger ist schneller wie Wand)
Das bringt den Vorteil, wenn die Wand angehalten wird (Spieler steckt dazwischen) läuft der Trigger weiter und
kommt aus der Wand und entfernt den Schmutz das die Wand weiterlaufen kann.
Bei ner Tür bzw. bei einer rotate Bewegung würde ich´s auf die gleiche Zeit einstellen, da sonst der Trigger auf der anderen Seite der Tür rauskommt.
Was vielleicht auch noch wichtig ist ist das der Trigger der verletzen soll bewegt wird,
der andere wird mit der Wand erst verbunden (linkto) nach der Bewegung wieder
getrennt (unlink).