Ich arbeite mich zu Zeit in die Spielprogrammierung ein und hänge gerade etwas an einer Sache fest.
Es soll letztendlich ein Jump n Run sein ähnlich wie Super Mario o.ä.
PlayerSprites, MapSprites sowie Background sind alle vorhanden und verhalten sich wie ich es wünsche.
Kollisionsabfrage zwischen Player und Map funktioniert, allerdings nicht ganz wie ich es gerne hätte.
Mein Problem liegt beim Springen bzw der Landung eines Sprungs. Es kommt immer wieder vor, dass der Player kurz vorm Boden stehen bleibt und dann quasi "schwebt".
Springen tue ich folgendermaßen:
if (!Jumped && KS.IsKeyDown(Keys.Up))
{
Jumped = true;
JumpHeight = JumpG;
}
if (Jumped && !Game1.Collision(new Vector2(PlayerPosition.X, PlayerPosition.Y - JumpHeight + Speed)))
{
PlayerPosition = new Vector2(PlayerPosition.X, PlayerPosition.Y - JumpHeight);
JumpHeight--;
}
else
Jumped = false;
(Habe gerade auch kleine Probleme die Formatierung für C#-Codes zu nutzen. Bekomme es nur vollkommen ohne Formatierung hin wenn ich das nutzen will. Daher der Code einfach so geschrieben)
Mir ist schon klar das es daran liegt, weil ich die JumpHeight dekrementiere und dadurch krumme Werte für die Y-Koordinate bekomme.
Allerdings fehlt mir der Ansatz wie ich das Problem umgehe.
Rein theoretisch könnte ich den Player ja um Komplette Blöcke laufen lasse und das Problem so lösen, weil ich dann ja keine Zwischenschritte mehr habe. Finde ich aber nicht so ansehnlich.
Wie gesagt, ich arbeite mich gerade erst rein und stehe noch recht weit am Anfang.
Hoffe das es nicht ganz so sehr in den Augen bei euch weh tut wenn ihr das seht