///////////////////////////////
#include <acknex.h>
#include <default.c>
var walk_percentage;
var dist=200;
var tracy=-10;//für c_trace
ENTITY*box1;
var movement_speed = 10; // movement speed
VECTOR temp;
VECTOR temp2;
VECTOR one;
VECTOR two;
ANGLE temp_angles;
///////////////////////////////
action Spieler()
{
player=my;
c_updatehull(my,1);
while(1)
{
if(key_a)//wenn der ,der das "Spiel" spielt die a Taste drückt
{
//my.pan+=10*time_step;//für die Drehung des Spielers my.pan+=1; ist genau das gleiche wie my.pan=my.pan+1;
c_rotate(my,vector(10*time_step,0,0),GLIDE | IGNORE_PASSABLE);
}
if(key_d)//wenn der ,der das "Spiel" spielt die d Taste drückt
{
c_rotate(my,vector(-10*time_step,0,0),GLIDE | IGNORE_PASSABLE);//für die Drehung des Spielers my.pan+=1; ist genau das gleiche wie my.pan=my.pan+1;
}
if(key_w&&key_shift)//wenn der ,der das "Spiel" spielt die w Taste und die Shift Taste drüct drückt
{
c_move(my,vector(20*time_step,0,0),nullvector,GLIDE | IGNORE_PASSABLE);//Spieler bewegt sich schneller nach vorne
ent_animate(my, "walk", walk_percentage, ANM_CYCLE); // Geh-Animation
walk_percentage += 4 * time_step; // Geschwindigkeit für die Gehanimation
}
if(key_w)//wenn der ,der das "Spiel" spielt die w Taste drückt
{
c_move(my,vector(5*time_step,0,0),nullvector,GLIDE | IGNORE_PASSABLE); //Spieler bewegt sich nach vorne
ent_animate(my, "walk", walk_percentage, ANM_CYCLE); // Geh-Animation
walk_percentage += 4* time_step; // Geschwindigkeit für die Gehanimation
}
if(key_s)//wenn der ,der das "Spiel" spielt die w Taste drückt
{
c_move(my,vector(-5*time_step,0,0),nullvector,GLIDE | IGNORE_PASSABLE); //Spieler bewegt sich nach vorne
ent_animate(my, "walk", walk_percentage, ANM_CYCLE); // Geh-Animation
walk_percentage += 4* time_step; // Geschwindigkeit für die Gehanimation
}
//camera.x = player.x - 200 * cos(player.pan); // 200 = distance
// camera.y = player.y - 200 * sin(player.pan); // same value here
//camera.z = player.z + 20; // above the player
//camera.pan = player.pan;
camera.tilt = 0; // look down at the player
camera.roll = 0;
vec_set(temp.x, vector(10000, 0, -20)); // trace 1000 quants in front of the camera (the player)
vec_rotate(temp.x, player.pan); // rotate "temp" in the direction (angles) given by the camera (the player)
vec_add(temp.x,player.x); // add the resulting vector to camera's (player's) position
vec_set(temp2.x, vector(10000, 0, 20)); // trace 1000 quants in front of the camera (the player)
vec_rotate(temp2.x, player.pan); // rotate "temp" in the direction (angles) given by the camera (the player)
vec_add(temp2.x, player.x); //
if(c_trace (vector(player.x,player.y,player.z-20), temp.x, IGNORE_ME | USE_POLYGON )>0)
{
vec_set(one,hit);
draw_line3d(vector(player.x,player.y,player.z-20), NULL, 100);
draw_line3d(hit.x, vector(0, 0, 0), 100);
dist=vec_dist(one,two);
}
if(c_trace (vector(player.x,player.y,player.z+20), temp2.x, IGNORE_ME | USE_POLYGON )>0)
{
vec_set(two,hit);
draw_line3d(vector(player.x,player.y,player.z+20), NULL, 100);
// draw a blue line that connects s1 and s2
draw_line3d(hit.x, vector(255, 0, 0), 100);
dist=vec_dist(one,two);
}
if(c_trace (player.x,vector(player.x,player.y,player.z-1000), IGNORE_ME | USE_POLYGON )>0)
{
c_move (my, nullvector, vector( 0, 0, tracy*time_step), GLIDE | IGNORE_PASSABLE);
}
draw_line3d(one, NULL, 100);
draw_line3d(two, vector(0, 0, 0), 100);
if(dist<70)
{
tracy=-100;
}
else
{
tracy=-10;
}
wait(1);
}
}
function main()
{
level_load("test.wmb");
}