Entity kommt nicht nach

Posted By: hopfel

Entity kommt nicht nach - 05/06/09 18:56

Ich habe eine Hauptentity, welche eine Waffe trägt. diese habe ich mit vec_for_bone und vec_set an die Hand der Hauptentity geknüpft. Bewegt sich jetzt aber die Entity oder macht eine Bewegung ruckelt die Waffe hinter der Hand hinterher und das sieht sehr unschön aus. Wie kann ich die Waffe fest auf der Hand fixieren?
Posted By: Anonymous

Re: Entity kommt nicht nach - 05/06/09 19:02

vermutlich ist da ein wait zwischen den prositioniungen
Posted By: hopfel

Re: Entity kommt nicht nach - 05/06/09 19:05

das einzige wait das das ganze beinflussen könnte ist das am Ende der While schlaufe.
Posted By: Pappenheimer

Re: Entity kommt nicht nach - 05/06/09 19:15

Dann sind Position bekommen und Position übergeben vertauscht.
Posted By: hopfel

Re: Entity kommt nicht nach - 05/06/09 19:20

Also so stehts in meinem Code:

vec_set(waffe.x,linkehand.x);

der erste Vector wird vom zweiten überschrieben heisst es doch.
Posted By: Pappenheimer

Re: Entity kommt nicht nach - 05/06/09 19:33

^^ Das meinte ich nicht. Hätte man aber so verstehen können, stimmt.
Es geht um die Reihenfolge in der While-Schleife:
Posted By: Widi

Re: Entity kommt nicht nach - 05/06/09 20:33

Setze in der Waffenfunktion

proc_mode = PROC_LATE;

Dadurch wird diese Funktion nach allen anderen (und auch der Playerpositionierung) ausgeführt. Sonst kann es sein, dass erst die Waffe auf die Position des Spielers gesetzt wird, und dann noch vor dem Bildaufbau wird die Position des Spielers neu gesetzt. Dadurch scheint es, als ob die Waffe hinterherhinkt.
Es ist zwar nur ein Frame unterschied, aber es ist sichtbar...
Posted By: hopfel

Re: Entity kommt nicht nach - 05/07/09 10:27

ALso: ich habe die Positionen vertauscht und es wurde noch schlechter smile und wenn ich "proc_mode = PROC_LATE;" reintu oder nioht, es macht keinen Unterschied frown
Posted By: Anonymous

Re: Entity kommt nicht nach - 05/07/09 12:00

Poste doch einfach die betreffenden Stellen Deines Quellcodes.
Dann können wir auch konkretere Hilfe geben.
Posted By: hopfel

Re: Entity kommt nicht nach - 05/07/09 13:46

Hier einfach mal die ganze Funktion der Hauptentity:

ENTITY* uziman;
ENTITY* uzilinks;
ENTITY* uzirechts;
VECTOR linkhand;
VECTOR rechthand;
ANGLE linkhand2;
ANGLE rechthand2;
VECTOR linkhand3;
VECTOR rechthand3;

function uzimanfunktion()
{
uzilinks = ent_create ("uzi.mdl", vector(0, 0, 90), NULL);
uzirechts = ent_create ("uzi.mdl", vector(0, 0, 90), NULL);
var laufanim=0;
uziman=me;
c_updatehull(my,1);
while(1)
{
vec_for_bone(linkhand3,my,"bone15");
vec_for_bone(rechthand3,my,"bone14");
vec_for_bone(linkhand,my,"bone9");
vec_for_bone(rechthand,my,"bone12");
vec_set(uzilinks.x,vector(linkhand.x,linkhand.y,linkhand.z));
vec_set(uzirechts.x,vector(rechthand.x,rechthand.y,rechthand.z));

vec_set(uzilinks.pan,vector(linkhand2.pan+=key_1,linkhand2.tilt+=key_2,linkhand2.roll+=key_3));
vec_set(uzirechts.pan,vector(rechthand2.pan,rechthand2.tilt,rechthand2.roll));

vec_to_angle(linkhand2,vec_sub(linkhand3,uzilinks.x));
vec_to_angle(rechthand2,vec_sub(rechthand3,uzirechts.x));
camabst=c_trace(my.x,camera.x,IGNORE_ME + IGNORE_MODELS);

vec_set(camera.x,vector(-30+camabst,0,5));
vec_rotate(camera.x,my.pan);
vec_add(camera.x,my.x);
vec_set(camera.pan,nullvector);
ang_add(camera.pan,vector(my.pan,my.tilt+5,my.roll));

bodhaft=c_move(my,vector(0,0,-4*time),vector(0,0,0 ),IGNORE_SPRITES+IGNORE_MODELS);
c_move(my,vector(1*(key_cuu-key_cud)*time,0,0),vector(0,0,0 ),IGNORE_SPRITES + GLIDE +IGNORE_MODELS);
my.pan+= 2*(key_cul-key_cur)*time;
if(jump==0)
laufanim+=5*(key_cuu-key_cud)*time;
ent_animate(my, "walk",laufanim, ANM_CYCLE);
if(laufanim<=0)
laufanim=100;
if(key_space&&jump==0)
{
jump=1;
fall=20;
}
if(jump==1)
{
jumpanim+=3*time;
ent_animate(my, "jump",jumpanim, ANM_ADD);
c_move(my,vector(0,0,fall*time),vector(0,0,0 ),IGNORE_SPRITES+IGNORE_MODELS);

fall-=2*time;
if(fall<=12&&key_space)
{
fall=20;
jumpanim=0;
jump=2;
}
if(fall<=0&&bodhaft<=0.1)
{
fall=0;
jump=0;
jumpanim=0;
}
}
if(jump==2)
{
jumpanim+=4*time;
ent_animate(my, "erjump",jumpanim, ANM_ADD);
c_move(my,vector(0,0,fall*time),vector(0,0,0 ),IGNORE_SPRITES+IGNORE_MODELS);

fall-=2*time;
if(fall<=0&&bodhaft<=0.1)
{
fall=0;
jump=0;
jumpanim=0;
}}
wait(0);
}}
Posted By: Anonymous

Re: Entity kommt nicht nach - 05/07/09 14:13

Ich quote mich mal selbst:
"vermutlich ist da ein wait zwischen den positionierungen"

Wenn Du Dir Deinen code betrachtest, setzt Du die Uzis an deren Position und bewegst dann die Entity. Das muss aber umgekehrt sein.
Posted By: Widi

Re: Entity kommt nicht nach - 05/07/09 14:32

Ja, du musst erst den Player bewegen und erst dann die Waffen setzen.
So wie du das jetzt programmiert hast, berechnest du erst die Positionen der Hand, setzt die Waffe auf diese Position und dann bewegt sich der Spieler, aber die Waffe nicht mehr. Und jetzt wird das Bild aufgebaut (wait), der Spieler ist VOR der Waffe.

PS: Warum packst du das alles in eine Function? Wäre viel übersichtlicher wenn die Uzi ne eigene Funktion hat (ent_create .....,Uzi_func;). Dort kannst du dann auf den Spieler mittels des you - Pointers zugreifen, und wenn du dann in der Function proc_mode gebrauchst, klappt es auch mit dem gleichzeitigen darstellen.
Posted By: hopfel

Re: Entity kommt nicht nach - 05/07/09 14:50

Jop jetzt klappt es prima smile Danke für die Hilfe
© 2024 lite-C Forums