Hallo,
Ich habe hier dieses Projekt in den Resourcen gefunden:
RollercoasterIch habe den Code für die Kugel+Kamera übernommen und auch das Model.
Trotzdem ist meine Kugel sehr unrealistisch (überhaupt nicht wie in dem Projekt): sie kann sich nach linksbewegen und nach rechts rollen,
sie ist viel zu schnell und sie geht mannchmal durch wände.
Warum ist das bei mir so und in dem Projekt nicht, es wird doch der gleiche code verwendent?
Hier mein Code:
Code:
entity* player;
var dist_trace;
var dist_planar=20000; //distanz zum spieler
var cam_angle = 0;
var tilt_3rd=30;
var dist_total=200;
var updown=100;
var phys=1;
var camsw;
Function validate_view()
{
my=player;
trace_mode = ignore_me + ignore_passable;
dist_trace = trace (player.x, camera.x);
if (dist_trace == 0)
{
return; // No obstacles hit... fine
}
if (dist_trace < dist_total&&camsw==0)
{
dist_trace -= 5; // Move it out of the wall
dist_planar = cos (tilt_3rd) * dist_trace;
camera.x = player.x - cos (cam_angle) * dist_planar;
camera.y = player.y - sin (cam_angle) * dist_planar;
camera.z = player.z + sin (tilt_3rd) * dist_trace;
}
}
}
Function update_views()
{
vec_set(temp,vector(player.x,player.y,0));
vec_sub(temp,camera.x);
vec_to_angle(camera.pan,temp);
dist_planar = cos (tilt_3rd) * dist_total;
camera.x = player.x - cos (camera.pan) * dist_planar;
camera.y = player.y - sin (camera.pan) * dist_planar;
camera.z = player.z+updown;
camera.tilt=-asin(updown/vec_dist(camera.x,player.x));
updown+=key_force.y; cam_angle=camera.pan;
validate_view();
}
bmap strall=<bluel.bmp>; bmap blue=<blue.pcx>;bmap glow=<strall.pcx>;
function part_bigf
{my.alpha-=1;
if(my.alpha<0){my.lifespan=0;
}
}
function part_big
{my.transparent=on;my.alpha=70;my.bmap=blue;my.size=20;my.bright=on; my.function =part_bigf;
}
function part_smallf
{
if(my.z>5000){my.lifespan=0;}
}
function part_small
{my.flare=on;
my.vel_z=80;my.move=on;my.streak=on;my.alpha=100;my.bmap=glow;my.size=5;my.bright=on; my.function =part_bigf;
}
action roller
{
player=me; //Ich bin der Spieler
my.enable_impact=on;my.enable_block=on;
my.enable_trigger=on;my.trigger_range=10;
phys=1;
my.enable_impact=on; my.enable_block=on; //Actionen bei kollision
phent_settype(my,ph_rigid,ph_sphere); //Physik
phent_setmass(my,.8,ph_sphere); //phsysik
temp.x=0;temp.y=0;temp.z=-306; //defenieren von dem vector temp
ph_setgravity(temp); //physik
phent_setfriction(my,20); //physik
phent_setelasticity(my,0,0); //physik
phent_setdamping ( my, 0, 0 ); //physik
while(my!=null) //solange er exestiert mache...
{
update_views(); //camera richtig hinmachen
effect(part_big,1,my.x,normal);
if(phys==1)
{
if(key_a==1) //wenn Taste a gedrückt wird...
{
phent_addcentralforce(my,vector(200*COS(CAM_ANGLE+90),200*SIN(CAM_ANGLE+90),0))*time; //...bekommt der spieler einen kraftschub nach vorne
}
if(key_d==1)
{
phent_addcentralforce(my,vector(-200*COS(CAM_ANGLE+90),-200*SIN(CAM_ANGLE+90),0))*time;
}
if(key_w==1)
{
phent_addcentralforce(my,vector(200*COS(CAM_ANGLE),200*SIN(CAM_ANGLE),0))*time;
}
if(key_s==1)
{
phent_addcentralforce(my,vector(-200*COS(CAM_ANGLE),-200*SIN(CAM_ANGLE),0))*time;
}
}
if(phys==0)
{
phent_settype(my,0,0);
break;
}
if(phys==2)
{
phent_settype(my,0,0);
phys=3;
}
wait(1);
}
}
Ich habe den code jetzt nicht einfach so kopiert und mache da ein "Spiel" draus,
das ist vorerst nur zu Übungszwecken.(deshalb die dumme kommentation)
Aber eigentlich müsste sich die Kugel bei mir genau so verhalten,
wie die in dem Projekt warum tut sie das nicht?
Was ist an dem Code falsch?
Kann das an der Version liegen?
MfG Big_Boss