Koordinatenberechnung
-
Hallo
Ich habe mir ein paar Klassen für SDL geschrieben und diese teste ich gerade in einem Mini-Pong Spiel. Dabei ist mir folgendes Probelm aufgefallen. Die x und y Koordinaten des Balls werden folgendermaßen berechnet:
pos_x += static_cast<int>(speed_x * get_timer()->elapsed()); pos_y += static_cast<int>(speed_y * get_timer()->elapsed());Wenn hierbei speed_x oder speed_y kleiner als ca. 100 sind, wird die Berechnung sehr "schwammig". Das bedeutet, des der Ball sich nicht auf einer Linie bewegt, sondern immer mal springt. Das liegt sicher am Runden der Zahlen. Ich kann aber nicht grundsätzlich mit floats arbeiten, weil ein SDL_Rect nun mal aus UInt16 besteht. Da dieses Problem sicher bekannt ist, wollte ich euch mal fragen, wie ihr es lösen würdet.
chrische
-
Dann mach dein PosX und PosY zu einem float, und beim Zeichnen castest du auf int ...
-
Hallo
Zum Zeichnen übergibt man aber einen Zigen auf ein SDL_Rect und das arbeitet mit UInt16 Variablen für höhe, breite, x und y
chrische
-
chrische5 schrieb:
Hallo
Zum Zeichnen übergibt man aber einen Zigen auf ein SDL_Rect und das arbeitet mit UInt16 Variablen für höhe, breite, x und y
chrische
ja, und DANN sollst du auch casten, nicht schon vorher! posX und posY laesst du float, und wenn du dann das SDL_Rect erstaellst, castest du posX und posY zu ints
-
Hallo
Ihr habt ja recht.
Ich habe es nun hinbekommen.Vielen Dank
chrische