Hallo,
ich habe das Playerscript an Lite-C anpassen können. Doch leider geht es noch nicht richtig (das Bewegen funktioniert aber). Wenn ich die Sprungtaste drücke geht er zwar nach oben, fällt aber nicht wieder automatich nach unten, das selbe auch beim ducken nur halt umgekehrt.
Wo ist da der Fehler?
Code:
var move_forward = 17;
var move_back = 31;
var move_left = 30;
var move_right = 32;
var turn_left = 16;
var turn_right = 18;
var jumpkey = 56;
var crawl = 46;
var run = 42;
VECTOR player_dist;
VECTOR TEMP;
#define health skill1
function camera_pos()
{
camera.genius = player;
camera.x = player.x;
camera.y = player.y;
camera.z = player.z+30;
camera.pan = player.pan;
}
function schwerkraft()
{
vec_set (temp, my.x);
TEMP.z -= 1000;
trace_mode = IGNORE_ME + IGNORE_PASSABLE + USE_BOX;
my.skill3 = trace(my.x, temp);
if (my.skill3 > 2)
{
player_dist.z -= 2 * time_step;
}
else
{
player_dist.z = 0;
}
if (my.skill3 < 0)
{
player_dist.z += 2 * time_step;
}
}
var jump_time = 1;
function jump()
{
while (jump_time > -1)
{
player_dist.z = 30 * time_step * jump_time;
jump_time -= 0.11 * time_step;
if(my.skill3 < 2){jump_time = 1;break;}
wait (1);
}
while (key_pressed(jumpkey) == 1) {wait(1);}
jump_time = 1;
}
action my_wwolf3()
{
player = my; // ich bin an jetzt die Spielfigur
my.health = 100; // Ich habe 100 Lebenspunkte
while(my.health > 0) // während meine Lebensenergie größer als 0 ist
{
player_dist.x = (key_pressed(move_forward)-key_pressed(move_back))*10*time_step;
player_dist.y = (key_pressed(move_left)-key_pressed(move_right))*10*time_step;
camera.tilt -= 10*-mouse_force.y*time_step;
player.pan -= 10*(mouse_force.x+(key_pressed(turn_left)-key_pressed(turn_right)))*time_step;
camera_pos();
schwerkraft();
if(key_pressed(run) == 1){player_dist.x *= 2; player_dist.y *= 2;}
if(key_pressed(jumpkey) == 1){jump();}
if(key_pressed(crawl) == 1)
{
player_dist.z-=10; //nach unten "schieben"
player_dist.x /= 2; //läuft langsamer
player_dist.y /= 2; //läuft langsamer
}
move_mode = IGNORE_PASSABLE + GLIDE;
ent_move(player_dist, nullvector);
wait(1);
}
}