Leider funktioniert dein Code nicht so, wie ich mir das vorstelle. Wenn ich mit z.B. 50 sprint_v aufhöre zu sprinten, regeneriert sich die Ausdauer nicht. Außerdem sprint sprint_act ebenfalls hin und her, wenn ich sprint_v = 2 erreicht habe.
ich stelle mir das so vor:

Ich kann solange sprinten, bis sprint_v auf null ist. Während des Sprintvorgangs wird sprint_act = 1 gesetzt, um später z.B. den Sound damit zu managen. Wenn die komplette Ausdauer verbraucht ist, sollte die Figur aufhören zu sprinten, und sprint_act = 0 sollte gesetzt werden. Wenn die Figur mit z.B. sprint_v = 50 aufhört zu sprinten, sollte sich die Ausdauer ebenfalls regenerieren.
Ich habe mich nocheinmal versucht:
Code:
//dist sprint ist der Sprintvektor
if(sprint_v > 1 && key_shift && key_w)
		{
			c_move(me,vector(dist_sprint,0,0),vector(0,0,0), IGNORE_ME | IGNORE_PASSABLE | USE_POLYGON | GLIDE);
			
			sprint_act = 1;
			sprint_v = sprint_v -0.7 *time_step;
		}
		else
		{
			sprint_act = 0;
			dist_sprint = 0;
			sprint_v = clamp(sprint_v,0,100);
			sprint_v = sprint_v +0.3 *time_step;
		}



Das scheint verzwickt zu sein, da das obige ebenfalls nicht richtig funktioniert. Die Regeneration funktioniert zwar, allerdings sprint sprint_act wieder wild umher wenn sprint_v = 1 erreicht ist. Was halt einen ziemlichen Performanceverlust mit sich bringt, da ja ständig sprint_act hin und her geändert wird, sprich, die Bewegung des Spielers gerät ins stocken. (Die FPS sagen allerdings was anderes, liegt wohl an time_step)

Viele Grüße, und einen schönen Tag Der Deutschen Einheit,
TheShooter

Last edited by TheShooter; 10/03/12 12:56.

Staub ist das neue Prime!!

Programming is like sex:
One mistake and you have to support it for the rest of your life.

Aktuelles Projekt: http://thisiswargame.bplaced.net/index.html

A8 Commercial *freu*