|
Kann Kollisionsbox Grösse nicht ändern
#280497
07/22/09 22:17
07/22/09 22:17
|
Joined: Jun 2004
Posts: 134 127.0.0.1
Vampir
OP
Member
|
OP
Member
Joined: Jun 2004
Posts: 134
127.0.0.1
|
Hi Da in meinem multiplayer Spiel die Spieler verschiedene Modelle haben, möchte ich die Kollisionsbox für alle Modelle genau gleich gross haben. Leider klappt das nicht so, wie ich mir das vorstelle. Also eigentlich klappt es gar nicht. Die Box verändert sich, wenn ich das NARROW flag setze, doch ich möchte sie für alle gleich haben, also mit min_x, max_x etc definieren.
ENTITY * PLAYER1;
PLAYER1 = ent_create("zoogon.mdl", vector(45,45,30), PlayerMove);
wait(1);
PLAYER1.eflags &= ~FAT;
PLAYER1.eflags |= NARROW;
var factor = 10;
PLAYER1.min_x = vector(-factor,-factor,-factor);
PLAYER1.max_x = vector(factor,factor,factor);
PLAYER1.min_y = vector(-factor,-factor,-factor);
PLAYER1.max_y = vector(factor,factor,factor);
PLAYER1.min_z = vector(-factor,-factor,-factor);
PLAYER1.max_z = vector(factor,factor,factor);
Das ist nur ein sehr kleines Beispiel. Ausprobiert hab ich viel mehr: Alle Kombinationen mit c_updatehull() vorher und nachher. Mit c_setminmac() vorher und nachher. Alles in While schleife. Statt mit vector halt mit einer var. Und noch viel mehr. Aber die Hülle ist einfach IMMER genau GLEICH. Ausser mit NARROW ist sie etwas kleiner. Wahrscheinlich hab ich was vergessen  mfg Vampir
|
|
|
Re: Kann Kollisionsbox Grösse nicht ändern
[Re: Vampir]
#280507
07/22/09 23:19
07/22/09 23:19
|
Joined: Sep 2003
Posts: 5,900 Bielefeld, Germany
Pappenheimer
Senior Expert
|
Senior Expert
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
|
Wenn ich vorher c_setminmax(PLAYER1); schreibe, fliegt das Modell durch den Boden, ohne Kollision. Da stimmt dann aber noch etwas anderes nicht. Ist denn sichergestellt, dass der Boden darunter schon erstellt ist, bevor du einen c_trace nach unten schickst? Ich würde nach dem "Justieren" der Kollsisionshülle duch c_setminmax und die min_z, max_z etc.-Werte ein wait(5); setzen bevor du den ersten c_trace losschickst.
|
|
|
Re: Kann Kollisionsbox Grösse nicht ändern
[Re: Pappenheimer]
#280511
07/23/09 00:00
07/23/09 00:00
|
Joined: Jan 2007
Posts: 2,247 Deutsch Niedersachsen
Puppeteer
Expert
|
Expert
Joined: Jan 2007
Posts: 2,247
Deutsch Niedersachsen
|
einfach fat und narrow vorm festlegen der hülle setzen dann sollte es gehen  set(player1, FAT | NARROW);
Last edited by Puppeteer; 07/23/09 00:00.
|
|
|
Re: Kann Kollisionsbox Grösse nicht ändern
[Re: Puppeteer]
#280577
07/23/09 12:30
07/23/09 12:30
|
Joined: Jun 2004
Posts: 134 127.0.0.1
Vampir
OP
Member
|
OP
Member
Joined: Jun 2004
Posts: 134
127.0.0.1
|
Hab ein eigenes Level gemacht nur mit einem Model mit Move action und Kamera. War genau das gleiche Problem. Danach wollte ich hier im Forum schreiben. Und zwar, dass es ein bisschen komisch ist, dass man um eine Box (oder ähnlich) zu definieren für min_x, max_x, min_y... etc überall ein Vektor angibt. Das geben dann ja 6 Vektoren um eine Collisions-Hülle zu definieren. Das kann nicht sein! Also hab ich nun nur noch ein Zahl angegeben. Ging auch nicht. Anschliessend habe ich noch den Tipp von Pappenheimer "verwendet" und hab waits eingebaut - und nun gehts. (übrigens wenn ich FAT | NARROW setzte flog er auch durch den Boden) Hier die Lösung:
var factor = 30;
c_setminmax(my);
wait(1);
my.min_x = -factor;
my.max_x = factor;
my.min_y = -factor;
my.max_y = factor;
my.min_z = -factor;
my.max_z = factor;
Also kann ich jetzt die Kollisions Box Grösse ändern. Der Krimi ist aber noch lange nicht zu Ende  Jetzt funktioniert die Bewegung nicht mehr!
my.pan = 0;
c_move(me, vector(5*time_step, 0, 0), vector(0, 0, 0),
IGNORE_PASSABLE | GLIDE);
my.pan = 180;
c_move(me, vector(5*time_step, 0, 0)), vector(0, 0, 0),
IGNORE_PASSABLE | GLIDE);
my.pan = 0;
c_move(me, vector(5*time_step, 0, 0)), vector(0, 0, 0),
IGNORE_PASSABLE | GLIDE);
my.pan = 0;
c_move(me, vector(-5*time_step, 0, 0)), vector(0, 0, 0),
IGNORE_PASSABLE | GLIDE);
Egal welches "c_move" ich verwende, er bewegt sich immer in die selbe Richtung! Mit c_move hatte ich eigentlich nie Probleme, aber im Moment scheint wirklich GAR NIX zu gehen.
|
|
|
Re: Kann Kollisionsbox Grösse nicht ändern
[Re: Vampir]
#280616
07/23/09 15:02
07/23/09 15:02
|
Joined: Sep 2003
Posts: 5,900 Bielefeld, Germany
Pappenheimer
Senior Expert
|
Senior Expert
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
|
Warum setzt du überhaupt feste Werte für den Drehwinkel vor c_move? Willst Du die Figuren nur in rechten Winkeln gehen lassen? Dann würde es aber keinen Sinn machen, dass Du dort 3mal "0" als Winkel stehen hast.
|
|
|
Re: Kann Kollisionsbox Grösse nicht ändern
[Re: Pappenheimer]
#280629
07/23/09 16:45
07/23/09 16:45
|
chris_oat
Unregistered
|
chris_oat
Unregistered
|
hallo, ich habe zur zeit auch ein problem mit der Bounding-Box meines players. ich verwende diesen code in meiner player_action;
wait(1); // wait 1 frame after creation
c_setminmax(me);
my.max_x = 4;
my.max_y = 4;
my.max_z = 35;
my.min_x = -4;
my.min_y = -4;
my.min_z = -35;
my.scale_x=0.51;my.scale_y=0.51;my.scale_z=0.51;
mit 2x F11 ich sehe die bounding box so wie sie ein soll, jedoch kann der player noch immer nicht z.b. so nah an wänden gehen, obwohl die box viel kleiner ist. was kann da sein???
Last edited by chris_oat; 07/23/09 16:46.
|
|
|
Moderated by mk_1, Perro, rayp, Realspawn, Rei_Ayanami, rvL_eXile, Spirit, Superku, Tobias, TSG_Torsten, VeT
|