Neue direction richtig berechnen
-
Aber hier wird doch der Bereich vorgegeben:
newPlayerDirection = atan2(playerMoveY, playerMoveX);
Damit ich dann das tun kann...
D3DXMatrixTransformation2D(&playerRotation, 0, 0, 0, &playerRotationCenter, playerDirection, 0);
playerSprite->SetTransform(&playerRotation);Wie soll ich den Bereich ändern?
MfG
-
Du sollst jetzt ja auch nur die Differenz aus den beiden Richtungen bilden und diese dann entsprechend des Einheitskreises in den Bereich von 0 bis 2*PI transformieren.
In C++:double diff = newPlayerDirection - playerDirection; // Differenz bilden // Transformation auf 0 bis 2*PI if(diff >= 0) diff = fmod(diff, 2*PI); else diff = 2*PI - fmod(diff, 2*PI); // check, ob rechts oder links rum drehen if(diff <= PI) playerDirection += playerTurnSpeed; else playerDirection -= playerTurnSpeed;
P.S. Ich habe auch deine anderen Fragen mal gelesen:
Wie kommt es, daß du ein Spiel programmieren willst, ohne die einfachsten Mathekenntnisse? Dann versuche wenigstens, die Formeln zu verstehen, ansonsten leidet auch dein Programm darunter, falls du kleine Änderungen vornehmen willst und keinen Plan hast...
-
Tja, kann man wohl nix machen. Bin halt ned gut in Mathe
Wenn der Start links unten ist und das Ende links oben, macht der trotzdem volle Drehung gegen Uhrzeigersinn.
Ja ich sollte mir mal Einiges genauer Anschauen, hilfst du mir hiermit trotzdem schnell?
MfG
-
Passen denn alle anderen Richtungsänderungen?
Kann sein, daß in meinem Algo noch ein Fehler ist (habe ich auch nicht selbst getestet).
Auf die Schnelle fällt mir nur ein, daß du evtl. dann diesen Fall besonders behandeln mußt:if(playerDirection > PI && newPlayerDirection < -PI)
-
Hey!
Wie soll denn (new)playerDirection größer als PI sein? Wird doch so berechnet:
newPlayerDirection = atan2(playerMoveY, playerMoveX);
Und... es stimmt schon alles aber wiegesagt:
Links unten nach links oben: Gegen den Uhrzeigersinn (Im Uhrzeigersinn kürzere Strecke)
Links oben nach links unten: Garnix passiertMfG
-
Help
-
Lustig, dass alle Kiddies immer nen Spiel "proggen" wollen, auch wenn sie nicht einmal ansatzweise das Wissen mitbringen
-
Ich kann mehr als du denkst. Und wenn ich was nicht weiß, frage ich eben oder beschäftige mich solange damit bis es hinhaut. Hab es ja auch hinbekommen nur leider zu kompliziert.
-
Und weißt du warum ich ein 2D Spiel programmieren will? Gerade eben damit ich viel dazulerne. Wenn ich das Wissen schon hätte, würde ich kein Spiel proggen weil ich eh kein Team hab.
-
Sorry, ich meinte natürlich jeweils PI/2.
if(playerDirection > PI/2 && newPlayerDirection < -PI/2)
Wenn der Rest funktioniert, dann bau einfach diesen Sonderfall ein.
Ich hatte vor ca. 5 Jahren mal ähnliche Probleme zu lösen (für ein Spiel, das dann doch nicht weiterentwickelt wurde), habe aber leider dessen Code nicht mehr...