Hallo, ich habe eine recht komplizierte Frage, die sich auch schwer formulieren lässt, ich entschuldige mich also im Voraus für etwaige Unklarheiten.

Ich habe in nervenaufreibender Kleinarbeit einen Code geschrieben, der es einer Entity gestattet in das Bezugssysthem einer Anderen einzutrten und dieses auch wieder zu verlassen.
Ganz so als ob jemand ein Ruberboot besteigt, damit herunfährt und es wieder verlässt.

Hier ist der Code:

action AAschiff
{my.passable = On;

while(1)
{
my.skill1=0;my.skill2=0;my.skill3=0;
if(key_j){my.pan+=1; my.skill1=1;}
if(key_l){my.pan-=1; my.skill1=-1;}
if(key_i){my.z+=1; my.skill2=1;}
if(key_k){my.z-=1; my.skill2=-1;}
if(key_o){my.skill3=1;}
if(key_u){my.skill3=-1;}
c_move (my,vector(my.skill3,0,0),nullvector,IGNORE_YOU);
wait(1);
}
}


action AApilot
{
my.passable = On;
var entsch=1;
var tik0;
var vec0[3]; var vec1[3]; var vec2[3];
var eul0[3]; var eul1[3]; var eul2[3];

while(1)
{
if(key_n){entsch=1;}
if(key_m){entsch=2;}
////////////////////////////////////////////////////////////////////////////
if(entsch==1){

tik0=0;
if(key_w){my.tilt+=1;}
if(key_s){my.tilt-=1;}
if(key_a){my.pan+=1;}
if(key_d){my.pan-=1;}
c_move (my,vector(key_e+key_q*-1,0,0),nullvector,IGNORE_YOU);


}
///////////////////////////////////////////////////////////////////////////////
if(entsch==2){
you=ptr_for_name("schiff");
if(tik0==0){vec_diff(eul2,my.pan,you.pan);vec_set(eul0,nullvector);tik0=1;}



vec_set(vec0,my.x);
vec_sub(my.x,you.x);
vec_rotate(my.x,vector(you.skill1,0,0));
vec_add(my.x,you.x);
vec_set(my.pan,you.pan);
c_move (my,vector(you.skill3,0,you.skill2),nullvector,IGNORE_YOU);

if(key_w){eul0.tilt+=1;}
if(key_s){eul0.tilt-=1;}
if(key_a){eul0.pan+=1;}
if(key_d){eul0.pan-=1;}

vec_add(my.pan,eul2);
vec_add(my.pan,eul0);

c_move (my,vector(key_e+key_q*-1,0,0),nullvector,IGNORE_YOU);
}

vec_set(camera.x,my.x); vec_set(camera.pan,my.pan);

wait(1);
}
}

Die erste Action ist ja gans simpel, sie steuert einfach nur das "Schiff"
nach vorne und hinten, dreht es nach links und rechts und lässt es auf-und absteigen. (Wie einen Zepelin)

Die 2. Action besteht eigentlich aus 2 Teilen, die Variable "entsch" entscheidet darüber, welchen "Modus" die Entitet annehmen soll.
Wenn "entsch" den Wert 1 hat, also der erste Modus aktiv ist, dan ist die Entitet ein simples "freifligendes" Objeckt, das sich so ÄHNLICH verhält wie das
"Schiff".
Aber im 2. Modus verhält sich die Entität mit dieser Action so als ob "Schiff"
sein Bezugssysthem währe, so als ob die beiden mit einer unsichtbaren Stange verunden währen.
ABER zusätlich kann sich die "Pilot"-Entität auch noch relativ zum Schiff bewegen.




Ich weiß genau, dass das alles seltsam formuliert ist.
Darum könnt ihr, zum besserem Verständniss, versuchen diesen Code mal zu kopieren und im WED zwei Entitäten diese Actionen zuzuwiesen.
Doch Vorsicht, die eine Eintität, die die Action "AAschiff" hat, muss im WED auch "schiff" heißen.

Wer das tut, und ein wenig mit disem Code herumspielt, dem fällt vielleicht auf, dass wenn das "Schiff" gleichzeitig geradeaus und nach recht (oder links) steuert, die Pilot-Entität "wegdriftet".

Meine eigentliche Frage ist also, ob jemand weiß, wie sich diese "Wegdriften" beheben lässt.

MfG Marc