vec_set(temp, my.x); //Messen der Höhe über dem Boden
temp.z -= 4000;
floor_col_pos = c_trace(my.x, temp,IGNORE_ME|IGNORE_PASSABLE|IGNORE_MODELS|IGNORE_SPRITES|USE_BOX);
if(str_cmp(ani_switch, "Run") || str_cmp(ani_switch, "Jump")) //beim Rennen- und Springen-Status
{
move_speed_side = 0;
if(move_speed < 0)
{
move_speed = 0;
}
if(move_speed < 8)
{
move_speed += 0.5;
}
else
{
move_speed = 8;
}
if(str_cmp(ani_switch, "Jump")) //beim Springen-Status
{
Jump_Status = 1;
if(vertical_speed < 0)
{
vertical_speed = 0;
}
if(vertical_speed < 10)
{
vertical_speed += 0.2;
}
else
{
vertical_speed = 10;
}
}
}
if(str_cmp(ani_switch, "Fall")) //beim Fallen-Status
{
move_speed_side = 0;
Fall_Status = 1;
Jump_Status = 0;
if(move_speed > 0)
{
move_speed -= 0.05;
}
else
{
move_speed = 0;
}
if(vertical_speed > 0)
{
vertical_speed = 0;
}
if(floor_col_pos > 0)
{
if(vertical_speed > -10)
{
vertical_speed -= 0.2;
}
else
{
vertical_speed = -10;
}
}
if(floor_col_pos <= 0)
{
vertical_speed = 0;
}
}
if(floor_col_pos > 150) //beim Fliegen-Status
{
move_speed_side = 0;
Jump_Status = 0;
Jump_percentage = 0;
if(move_speed > 0)
{
move_speed -= 0.05;
}
else
{
move_speed = 0;
}
Fly_Status = 1;
if(vertical_speed > -10)
{
vertical_speed -= 0.2;
}
else
{
vertical_speed = -10;
}
}
if((floor_col_pos < 100) && (Fly_Status == 1)) //bei geringer Höhe auf Fall-Status setzen
{
move_speed_side = 0;
Fly_Status = 0;
Fall_Status = 1;
}
player_dist.x = move_speed_side * global_time; //aktualisiere Bewegung
player_dist.y = -move_speed * global_time;
player_dist.z = vertical_speed * global_time;
if(my == mdl_player) //Player bewegen
{
move_min_z = 0.4;
c_move(my, player_dist, nullvector, IGNORE_PASSABLE|GLIDE);
}