|
|
Scripten = geschwindigkeit |
|
RE: Scripten = geschwindigkeit |
|
Hmm, ich weiß jetzt nicht exakt ob meine Überlegungen stimmen, aber so solltest du es hinbekommen.
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
|
start = ent.origin; //aktuelle Position des Objektes
dest = (x, y, z); // Zielpunkt des Objektes
dist = distance(start, dest); // Entfernung zwischen Start- und Zielpunkt
speed = (1 / 5) * dist; // Zeit für Enfernung bei 5 WE / Sekunde
ent moveto(dest, speed); // Objekt zur neuen Position bewegen |
|
Nur musst du jetzt beachten, das du keine feste Zeit für Beschleunigung und Abbremsen mehr angeben kannst, das die Gesamtzeit "speed" kleiner sein kann). Da kannst du dann nur noch einen prozentualen Wert nehmen, z.B
ent move(dest, speed, (speed / 10), (speed / 10));
__________________
Da die Lichtgeschwindigkeit höher ist als die Schallgeschwindigkeit,
hält man so manchen für einen hellen Kopf, bis man ihn reden hört.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von OLD MAN WITH GUN: 12.05.2008 16:47.
|
|
|
|
|
Mapicted
Steuerzahler
Dabei seit: 10.04.2015
Beiträge: 200
|
|
Danke, hat funktioniert.
Plattform bewegt sich jetzt per schalter hin und her, das funktioniert auch alles
Jetzt wollte ich noch einen dritten schalter einbauen womit ich die Plattforum stoppen kann.
Habs mal mit einigen Befehlen versucht aber bei allen der selbe bad syntax error.
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:
|
stop()
{
cat1 = getent ("cat1","targetname");
trig_cat1_stop = getent ("trig_cat1_stop","targetname");
while (1)
{
trig_cat1_stop waittill ("trigger");
cat1 movedone;
//cat1 donemove;
//cat1 moveend;
//cat1 endmove;
//cat1 endon;
}
}
|
|
__________________ Fresh Beginnings!
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Mapicted: 12.05.2008 20:13.
|
|
|
|
|
|
Ich wüsste jetzt nicht, das man nicht ohne Trick einen einmal gestarteten move Befehl stoppen kann.
Der Trick wäre, dem entity einen weiteren move Befehl geben. Dieser würde ihm als Ziel seine eigene aktuelle Position geben.
Im Sinne:
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
|
stop(ent) // das Entity (Plattform) der Funktion mit übergeben
{
trig_stop = getent ("trig_stop","targetname");
while(1)
{
trig_stop waittill("trigger");
ent moveto(ent.origin, 0.1);
wait 0.1;
}
} |
|
Das sollte eigentlich funktionieren.
__________________
Da die Lichtgeschwindigkeit höher ist als die Schallgeschwindigkeit,
hält man so manchen für einen hellen Kopf, bis man ihn reden hört.
|
|
|
|
|
Mapicted
Steuerzahler
Dabei seit: 10.04.2015
Beiträge: 200
|
|
wow, nicht schlecht das funktioniert
Also jetzt funktioniert alles, bis auf einen kleinen Fehler.
Wenn die Plattform an einem äußerem Endpunkt steht und man drückt den Schalten womit er sich normal in diese richtung bewegen soll kommt die Fehlermelung:
Hier mal das ganze Script:
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:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
|
main()
{
thread link();
thread cat1_move_1();
thread cat1_move_2();
stop();
}
link()
{
trig_cat1_1 = getent ("trig_cat1_1","targetname");
trig_cat1_2 = getent ("trig_cat1_2","targetname");
trig_cat1_stop = getent ("trig_cat1_stop","targetname");
trig_cat1_1 enablelinkto();
trig_cat1_2 enablelinkto();
trig_cat1_stop enablelinkto();
}
cat1_move_1()
{
cat1 = getent ("cat1","targetname"); // Plattform
trig_cat1_1 = getent ("trig_cat1_1","targetname"); // richtung -200, 1480, 90
trig_cat1_2 = getent ("trig_cat1_2","targetname"); // richtung 1072, 1480, 90
trig_cat1_stop = getent ("trig_cat1_stop","targetname");
//mg_1 = getent ("mg_1","targetname");
while (1)
{
trig_cat1_2 waittill ("trigger");
trig_cat1_1 linkto(cat1);
trig_cat1_2 linkto(cat1);
trig_cat1_stop linkto(cat1);
//mg_1 linkto (cat1);
start = cat1.origin; //aktuelle Position des Objektes
dest = (1072, 1480, 90); // Zielpunkt des Objektes
dist = distance(start, dest); // Entfernung zwischen Start- und Zielpunkt
speed = (1 / 35) * dist; // Sekund / WE
cat1 moveto(dest, speed); // Objekt zur neuen Position bewegen
}
}
cat1_move_2()
{
cat1 = getent ("cat1","targetname");
trig_cat1_1 = getent ("trig_cat1_1","targetname");
trig_cat1_2 = getent ("trig_cat1_2","targetname");
trig_cat1_stop = getent ("trig_cat1_stop","targetname");
//mg_1 = getent ("mg_1","targetname");
while (1)
{
trig_cat1_1 waittill ("trigger");
trig_cat1_1 linkto(cat1);
trig_cat1_2 linkto(cat1);
trig_cat1_stop linkto(cat1);
//mg_1 linkto (cat1);
start = cat1.origin; //aktuelle Position des Objektes
dest = (-200, 1480, 90); // Zielpunkt des Objektes
dist = distance(start, dest); // Entfernung zwischen Start- und Zielpunkt
speed = (1 / 35) * dist; // Sekund / WE
cat1 moveto(dest, speed); // Objekt zur neuen Position bewegen
}
}
stop()
{
cat1 = getent ("cat1","targetname");
trig_cat1_stop = getent ("trig_cat1_stop","targetname");
while(1)
{
trig_cat1_stop waittill("trigger");
cat1 moveto(cat1.origin, 0.1);
wait 0.1;
}
}
|
|
Ich weiss nicht wie ich den entsprechenden Trigger deaktivieren kann sobald die Plattform an einem der Edpunkte angelangt ist oder wie ich sonst den Fehler beheben kann.
__________________ Fresh Beginnings!
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Mapicted: 13.05.2008 10:49.
|
|
|
|
|
|
Hab deinen script mal ein "wenig" umbeschrieben. Ich hoffe mal, es ist alles einigermaßen zu verstehen (manches ist für einige nicht direkt nachzuvollziehen).
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:
61:
62:
63:
64:
|
main()
{
level.cat1_stand = true;
cat1_start = (-200, 1480, 90);
cat1_dest = (1072, 1480, 90);
cat1 = getent ("cat1","targetname");
trig_cat1_1 = getent ("trig_cat1_1","targetname");
trig_cat1_2 = getent ("trig_cat1_2","targetname");
trig_cat1_stop = getent ("trig_cat1_stop","targetname");
trig_cat1_1 enablelinkto();
trig_cat1_2 enablelinkto();
trig_cat1_stop enablelinkto();
trig_cat1_1 linkto(cat1);
trig_cat1_2 linkto(cat1);
trig_cat1_stop linkto(cat1);
trig_cat1_1 thread cat1_move_2(cat1, cat1_start, cat1_dest);
trig_cat1_2 thread cat1_move_1(cat1, cat1_start, cat1_dest);
trig_cat1_stop thread stop(cat1);
}
cat1_move_1(cat1,cat1_start, cat1_dest)
{
while (1)
{
self waittill ("trigger");
cat1 move_me(cat1_start, cat1_dest);
}
}
cat1_move_2(cat1, cat1_start, cat1_dest)
{
while(1)
{
self waittill("trigger");
cat1 move_me(cat1_dest, cat1_start);
}
}
move_me(cat1_start, cat1_dest)
{
if(level.cat1_stand && (self.origin != cat1_dest))
{
dist = distance(self.origin, cat1_dest);
speed = (1 / 35) * dist;
level.cat1_stand = false;
self moveto(cat1_dest, speed);
self waittill("movedone");
level.cat1_stand = true;
}
wait 0.1;
}
stop(cat1)
{
while(1)
{
self waittill("trigger");
if (!level.cat1_stand)
cat1 moveto(cat1.origin, 0.1);
wait 0.1;
}
} |
|
Wenn die Plattform jetzt an einem Ende angekommen ist und du betätigst noch einmal den schalter für die Fahrt in diese Richtung, passiert nichts mehr. Ich habe es auch so gemacht, das du immer nur über den Schalter "stop" die Richtung ändern kannst. Die Richtungsschalter sind während der Bewegung inaktiv.
__________________
Da die Lichtgeschwindigkeit höher ist als die Schallgeschwindigkeit,
hält man so manchen für einen hellen Kopf, bis man ihn reden hört.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von OLD MAN WITH GUN: 13.05.2008 17:50.
|
|
|
|
|
Mapicted
Steuerzahler
Dabei seit: 10.04.2015
Beiträge: 200
|
|
danke, funktioniert einwandfrei so.
__________________ Fresh Beginnings!
|
|
|
|
|
|
|
|
Impressum ||Datenschutzerklärung
|