Hatte den Code vorher nicht getestet, folgende Version funktioniert nun aber:

Code:
#define speed_z skill50
var key_space_off = 0;
VECTOR temp;

action act_player()
{
	c_setminmax(my);
	my.min_z += 40;
	while(1)
	{
		my.x += (key_w-key_s)*5*time_step;
		my.y += (key_a-key_d)*5*time_step;
		vec_set(temp,vector(my.x,my.y,my.z-500));
		c_trace(my.x,temp,IGNORE_ME | IGNORE_PASSABLE);
		if(!trace_hit) vec_set(target,temp);

		var target_height = target.z-my.min_z+40;

		if(my.z > target_height+5 || my.speed_z > 0)
		{
			my.speed_z = maxv(my.speed_z-10*time_step,-80);
			c_move(me,nullvector,vector(0,0,my.speed_z*time_step),IGNORE_PASSABLE);
		}
		else
		{
			my.speed_z = 0;
			if(my.z > target_height) my.z += (target_height-my.z)*time_step;
			else my.z = target_height;
			if(key_space)
			{
				if(key_space_off)
				{
					my.speed_z = 50;
					key_space_off = 0;
				}
			}
			else key_space_off = 1;
		}
		wait(1);
	}
}



Wie du siehst, "verringere" (absolut betrachtet) ich den min_z Wert, damit die Kollisionsbox nicht bis zu den Füßen geht, sondern bspw. nur bis zu den Knien. Dieser Wert muss dann aber auch bei target_height berücksichtigt und angepasst werden.


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends