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);
}



my webside : www.ascalon.jimdo.de