Posted By: Ascalon
Problem mit c_trace und c_move, bitte helfen - 03/22/13 21:48
Also ich habe folgenden Code, siehe unten. Wenn ich mit dem Terrain kollidiere, werde ich ein Stück zurückgeworfen und kann dann wieder weiterfahren. Geprüft wird das über c_move und dem trace_hit. So weit so gut. Verwende ich jetzt aber noch gleichzeitig ein c_trace, wie in meinem Bsp. um die Distanz zum Boden zu messen, bekomme ich Probleme mit meinem Code, da durch das c_trace ja ständig der Boden getroffen wird und somit meine Kollision über c_move zunichte macht. Vielleicht sehe ich aber das Problem vor lauter Bäumen nicht mehr. Kann mir jemand dabei bitte helfen ?
Code:
while(player) { //Rotationen des U-Bootes my.pan -= rotationSpeed * mouse_force.x * time_step; my.tilt -= rotationSpeed * mouse_force.y * time_step; my.tilt = clamp(my.tilt,-20,20); if(trace_hit) { collision = 1; } if(collision == 1) { //U-Boot wird zurückgeschleudert vecSubmarineMoveSpeed.x = -accelerate(actualSpeedForward, 0,0.4); vecSubmarineMoveSpeed.y = -accelerate(actualSpeedSideward, 0,0.4); vecSubmarineMoveSpeed.z = -accelerate(actualSpeedUpDown, 0,0.4); if(vecSubmarineMoveSpeed.x >= 0 && vecSubmarineMoveSpeed.x <= 0 && vecSubmarineMoveSpeed.y >=0 && vecSubmarineMoveSpeed.y <= 0 && vecSubmarineMoveSpeed.z >=0 && vecSubmarineMoveSpeed.z <= 0 ) { collision = 0; } } else { vecSubmarineMoveSpeed.x = accelerate(actualSpeedForward, 0.8*(key_w-key_s),0.04); vecSubmarineMoveSpeed.y = accelerate(actualSpeedSideward,0.08*(key_a-key_d),0.04); vecSubmarineMoveSpeed.z = accelerate(actualSpeedUpDown,0.4*(key_e-key_c),0.04); } c_move(my,vecSubmarineMoveSpeed,nullvector,0); distToGround = c_trace(my.x,vector(my.x,my.y,my.z - 10000), IGNORE_ME); wait(1); }