if(MoveState == 1)//klettern
{
vec_set(temp9, vector(0 , -120, my.max_z));
vec_rotate(temp9,vector(my.pan,my.tilt,my.roll));
vec_add(temp9,my.x);
vec_set(temp10, vector(0 , -120, my.min_z));
vec_rotate(temp10,vector(my.pan,my.tilt,my.roll));
vec_add(temp10,my.x);// wird wie temp12 exakt so wie unten(if(MoveState == 3)) gesetzt
vec_set(temp11, vector(0 , 0, my.max_z));
vec_rotate(temp11,vector(my.pan,my.tilt,my.roll));
vec_add(temp11,my.x);
vec_set(temp12, vector(0 , 0, my.min_z));
vec_rotate(temp12,vector(my.pan,my.tilt,my.roll));
vec_add(temp12,my.x);
draw_point3d(temp9,vector(0,0,0),50,25);
draw_point3d(temp11,vector(0,0,0),50,25);
draw_point3d(temp10,vector(0,0,0),50,25);
draw_point3d(temp12,vector(0,0,0),50,25);
DividateFactor = 0;//ich weiß mathematiker würden mich für den namen köpfen^^
fall_down = 0;
vec_set(Normale2,nullvector);//wird neu gesetzt
fall_down += c_trace(temp11,temp9,IGNORE_PASSABLE|IGNORE_ME);
if(HIT_TARGET)
{
DividateFactor += 1;
vec_add(Normale2,hit.nx);
}
fall_down += c_trace(temp12, temp10,IGNORE_PASSABLE|IGNORE_ME);
if(HIT_TARGET)
{
DividateFactor += 1;
vec_add(Normale2,hit.nx);
}
DividateFactor_Show = DividateFactor;
if(DividateFactor)
{
fall_down /= DividateFactor;
vec_mul(Normale2,vector(1/DividateFactor,1/DividateFactor,1/DividateFactor));
vec_to_angle(temp4,Normale2);//temp4 auch neu gestetz
vec_set(temp5,temp4);
temp5.x -= 90;//ausrichtung genau so wie unten
temp5.z = temp5.y;
temp5.y = 0;
MoveStateC = 1;
if(Normale2.z > 0.5)
{
MoveStateC = 0;
}
if(Normale2.z < -0.5)
{
MoveStateC = 2;
}
}
else
{
MoveStateC = 0;
}
...
}
if(MoveState == 2)//Hangeln
{...
if(HIT_TARGET)
{
vec_set(Normale2, hit.nx);
stop = 1;//sorgt dafür das der rest der vom hangeln nicht mehr ausgeführt wird
hight = hit.z;
vec_to_angle(temp4,Normale2);
vec_set(temp5,temp4);
temp5.x -= 90;//temp5 wird so gebraucht -> ausrichtung des spielers
temp5.z = temp5.y;
temp5.y = 0;
vec_set(temp15,temp5);
MoveStateC = 3;
}
else
{
MoveStateC = 0;
}
...
...}
if(MoveState == 3)
{
pXent_move(me,nullvector,vector(0,0,10*time_step));
vec_set(temp5,temp15);
vec_set(temp10, vector(0 , -120, my.min_z));
vec_rotate(temp10,vector(my.pan,my.tilt,my.roll));
vec_add(temp10,my.x);
vec_set(temp12, vector(0 , 0, my.min_z));
vec_rotate(temp12,vector(my.pan,my.tilt,my.roll));
vec_add(temp12,my.x);
c_trace(temp12,temp10,IGNORE_ME|IGNORE_PASSABLE);
if(HIT_TARGET)
{
vec_set(Normale2,hit.nx);
}
if(my.z-abs(my.min_z) > hight+10&&HIT_TARGET)
{
pXent_move(me, nullvector, vector(0,0,my.z-hight+abs(my.min_z)));
MoveStateC = 1;
pXent_move(me, vector(0,3*time_step,0),nullvector);
}
}