Jump n Run...Jump Probleme

Also das muss ich nicht verstehen. Hast du denn überhaupt ein Fenster!? Hast du das Fenster als Render-target?
Du brauchst eine Nachrichtenfunktion damit du dein Fenster benutzen kannst ;)
Und wie auch immer du das mit Variablen machen willst->weiß ich nicht.
MfG
 
Ja ok wusste nicht so was ein Message Handler ist hab mir mal Win-Api ein bisschen gelernt wusste nicht das ich das brauch soll das in der Update Funktion? Ich hab auf MSDN geschaut ist der Handler jetzt die Callback oder wie?
 
Also in welche Funktion du das schreibst ist dir überlassen. Von mir aus kannst du die Funktion auch Wurst nennen, wäre aber übersichtshalber nicht empfehlenswert ;) Also meine Spiele sind eigentlich immer mit der GameLoop ausgestattet. Diese ruft dann erst Update, Move und schließlich noch Render auf ;) In Update behandle ich die Fenster nachrichten, obwohl ich damit nichts mache(ich arbeite nur mit DirectInput). In Move werde dann alle möglichen Bewegungen ausgeführt, sowie die Physik geupdatet, und in Render wird halt alles gerendert. Daher das ich mir eine Engine schreibe, ist die GameLoop in der Engine und die vergangene Zeit rechnet mein Engine auch noch aus und übergibt sie dann der Move und Render Methode.
Wie genau das funnktioniert möchte ich nicht unbedingt erklären, aber gucke dir mal QueryPerformanceCounter an um die Zeiten zu messen ;)
MfG
 
Ok Danke...
Also mach die Update so WM und so ein kram die Move halt welche taste gedrückt ist und Render macht dann das Bild...Mein Problem war ja eigendlich nur das mit den Springen also das mit den Zählen aber wie Mess ich das mach ich vor den aufrufen von Update die erste Messung und unter Rendern die Zweite? Und wie rechne ich das denn?
 
Also wie du das misst: Anfang bis Ende ;) Du ließt die Zeit aus mit der Funktion die ich schon geschrieben habe. Dann machst du Meesage Handler, Move, Render und nimmst wieder die Zeit. Dann hast du 2 Zeiten. Anschließend rechnest du so:
C++:
Zeit = Zeit2 - Zeit1;
Das war nicht schwer oder ;)
Und in move werde Tasten abgefangen ja aber auch Objekte gedreht bewegt usw...
PS In welcher reihfolge die GameLoop alles abfrag ist dir überlassen. Es währe aber ratsam den Message Handler am Anfang aufzurufen.
Also:
C++:
// Startzeitpunkt messen
QueryPerformanceCounter(...);

// Nachrichten verarbeiten
while( PeekMessage( &Message, NULL, 0, 0, PM_REMOVE ) )
{
	TranslateMessage( &Message );
	DispatchMessage( &Message );

        if( Message.message == WM_QUIT )
	{
		// Game Loop verlassen
		bEndGame = true;
	}	
}

// Render
// Move
// und was du sonst noch brauchst
QueryPerformanceCounter(...);
MfG
EDIT: Wenn du es ganz genau haben willst mit Frame Limiter dann musst du noch geteilt durch die Frequenz nehemen ;)
 
Zuletzt bearbeitet von einem Moderator:
Zurück