Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

19.09.2015, 20:40

C++ SFML setRotation Problem

Hallo liebe Spieleprogrammierer

Ich programmiere momentan ein kleines Spiel, da es ums überleben geht auf einer Insel. Ich verwende dafür eine Top-Down Kamera.

Ich kann den Spieler in jede x-beliebige Position drehen aber es gibt da ein kleines Schönheitsproblem.
Und zwar dreht er sich nicht an der gleichen Position sondern wenn man jetzt nach links schaut und danach rechts schaut, verschiebt es die Position vom Spieler und dann sieht es aus als würde er sich zu anderen Seite teleportieren.
Ich habe auch die Origin in die Mitte gesetzt aber das hat nichts genützt.

Ich will das der Spieler sich an der gleichen Position drehen kann also oben,unten,rechts usw.
Ein Beispiel dafür ist Evoland 2.

Kann mir jemand helfen?

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

2

19.09.2015, 21:47

Ohne Code wird es schwer, den Fehler zu finden ;)
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

3

19.09.2015, 22:00

C-/C++-Quelltext

1
2
3
4
5
6
7
Origin: mPlayerSprite.setOrigin(mPlayerTexture.getSize().x / 2, mPlayerTexture.getSize().y / 2);

Rotation: 
if (up == true)
{
    mPlayerSprite.setRotation(90.f);
}


Ihr könnt es selber mal ausprobieren. Er dreht den Spieler nicht an Ort und Stelle sondern er verschiebt sie merkwürdig. Würde atan2 helfen, den Spieler an Ort und Stelle zu drehen?

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

4

19.09.2015, 22:07

Setzt du auch wirklich den Origin, bevor du das Sprite drehst?
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

5

19.09.2015, 23:57

Ja

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

20.09.2015, 04:30

Das was du vom Code zeigst ist nicht fehlerhaft. Da müssen wir schon etwas mehr sehen. Der Fehler liegt an einer anderen Stelle. Du könntest mal den Debugger benutzen. Setze einen Breakpoint direkt bevor du den Spieler drehst. Prüfe dann an der Stelle ob der Origin wirklich richtig gesetzt ist und gucke wie sich die Position direkt vor und nach der Rotation verändert.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige