Hallo Leute,
ich möchte für ein Panzerspiel eine einigermaßen spieltaugliche ballistische Flugbahn des Geschosses haben. Mein Problem ist, das ich die mathematischen Formeln die ich bislang gefunden habe, nicht in Programmcode umgesetzt bekomme.
Deshalb fliegt mein Geschoss bislang nur gerade und wird nach einer gewissen Strecke auch nach unten bewegt. Das ähnelt aber zu wenig einer echten Flugbahn.
Außerdem benutze ich als Geschoss eine Entity, welche wegen der hohen Geschwindigkeit durch kleinere Objekte "durchfliegt". Daher habe ich wischen den c_move Schritten noch eine c_trace mit event gesetzt. Hat jemand eine Idee, wie man eine simple ballistische Flugbahn einbauen könnte?

Code:
function move_rocket()
{
set (my, PASSABLE); // don't collide with the player
VECTOR rocket_speed;
	
VECTOR rocket_pos;		
VECTOR rocket_posold;
vec_set(rocket_posold.x, my.x); // Startposition der Rakete merken

	my.pan = entBarrel.pan;
	my.tilt = entBarrel.tilt;
	wait (1);
	my.emask |= (ENABLE_ENTITY|ENABLE_IMPACT|ENABLE_BLOCK);	
	my.event = remove_rocket;
	my.skill40 = 1234; // I'm a rocket
	my.skill20 = 0;
	
	my.skill5 = 0; // used for vertical movement	
	
	while (my.skill20 < 10)
	{
		if (my.skill20 > 2) // the rocket has moved away from the player? Then let's reset its passable flag
		reset (my, PASSABLE);
		effect (rocket_trail, 1, my.x, normal); // generate particle trails for the rocket
		//		my.roll += 20 * time_step;
		rocket_speed.x = 300 * time_step;
		rocket_speed.y = 0;
		rocket_speed.z = 0;
		
		my.skill5 += time_step;
		if (my.skill5 > 5) 
		{
			rocket_speed.z -= fall_speed * time_step;
		}		
		
		my.skill20 += 1 * time_step;
		c_move (my, rocket_speed, nullvector, IGNORE_PASSABLE);
		

vec_set(rocket_pos.x, my.x); // Momentane Position der Rakete merken		

c_trace(rocket_posold.x,rocket_pos.x,IGNORE_ME|IGNORE_PASSABLE|ACTIVATE_SHOOT|IGNORE_CONTENT);
//draw_line3d(rocket_posold.x,NULL,100); // draw line for debug 
//draw_line3d(rocket_pos.x,vector(0,0,255),100);

vec_set(rocket_posold.x,rocket_pos.x); // Alte Position merken
		
wait (1);
	}
remove_rocket();
}


Last edited by DexLoomer; 06/28/15 13:13.

A8-Com-v 8.47.1