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

15.05.2016, 20:12

[Box2d - SFML] Rotation - Camera - Steuerung

Guten Tach,

ich spiele gerade mit der Rotation von SFML.
Aktuell rotiere ich die Viewklasse von SFML um den mittelpunkt des Bildschirmes in der auch der Charakter zentriert sitzt.
Der Charakter ist dabei ein dynamisches Box2d Objekt, welche die Positionskoords an das SFML Sprite weitergibt.

Nun gibt es jedoch ein paar Probleme mit der Steuerung. Dreht man die Kamera nun um 90°, dreht sich die Steuerung mit.
Wenn man also nach links gehen möchte, geht man nach unten.
Mein Ziel ist es jedoch, dass sie nicht mitdreht.

Wie kann ich nun mit dem Winkel den ich habe weiter machen?

Grüße Urprimat
Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.

Linus Torvalds

2

15.05.2016, 20:57

Nun gibt es jedoch ein paar Probleme mit der Steuerung.
Wie ist den die Steuerung ? WASD? W-Nach Norden gehen oder (permanent) vorwärts gehen

Dreht man die Kamera nun um 90°, dreht sich die Steuerung mit. Wenn man also nach links gehen möchte, geht man nach unten.
Das ist ja eigentlich klar da nur die Kamera rotiert wird somit die Steuerung immer noch so funktioniert wie vor dem drehen.

Mein Ziel ist es jedoch, dass sie nicht mitdreht.
Macht es da nicht mehr Sinn nur den Charakter zu rotieren anstatt die ganze Kamera?
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

3

15.05.2016, 21:13

Zitat von »Urprimat«
Nun gibt es jedoch ein paar Probleme mit der Steuerung.

Wie ist den die Steuerung ? WASD? W-Nach Norden gehen oder (permanent) vorwärts gehen

Sorry total vergessen zu erwähnen: man steuert mit den Pfeiltasten!
Aktuell geht man mit den Pfeiltasten in die ensprechenden Himmelsrichtungen.
ich möcht jedoch, dass Zb. die Auf-pfeiltaste immer nach oben geht.

Mein Ziel ist es jedoch, dass sie nicht mitdreht.

Macht es da nicht mehr Sinn nur den Charakter zu rotieren anstatt die ganze Kamera?

Eigentlich wird es zu einem permanenten rotieren kommen. Es soll dazu dienen den Spieler zu verwirren.
Dafür sollte sich schon die ganze Welt, bzw. die Cam drehen können.


Liebe Grüße

Urprimat
Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.

Linus Torvalds

4

15.05.2016, 21:19

Dann Rotiere die Steuerung mit, eine Variable muss dann mit tracken in welche Richtung Rotiert wird und dann muss diese Variable ausgewertet werden und die Steuerung dem entsprechend reagieren.
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

5

15.05.2016, 21:35

Sagen wir mal, 0° würde nach rechts (in x-richtung), 90° nach oben (in y-richtung), 180° nach links und 270° nach unten zeigen. Nun kannst du auf diese Winkel den Rotationswinkel addieren und daraus einen (Einheits-)Vektor errechnen:

Quellcode

1
2
3
4
abs_angle = dir_angle+rot_angle
degrees_in_radians = abs_angle*π/180;
vec_x = cos(degrees_in_radians)
vec_y = sin(degrees_in_radians)


Nun hast du einen Vektor in Gehrichtung, welchen du mit der Framezeit und der Laufgeschwindigkeit multiplizieren kannst und auf die Spielerposition addieren kannst.
Das Ganze könnte auch mit Matrizen bewältigt werden.

Hab dir noch ein tolles Bild gemalt:

(Link)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Techel« (15.05.2016, 21:49)


6

15.05.2016, 22:18

hey,

vielen Dank.
ich hab nur gerade etwas verständnissprobleme.
Sagen wir mal, 0° würde nach rechts (in x-richtung), 90° nach oben (in y-richtung), 180° nach links und 270° nach unten zeigen. Nun kannst du auf diese Winkel den Rotationswinkel addieren und daraus einen (Einheits-)Vektor errechnen:

was genau ist in diesem fall mein dir_angle?

liebe Grüße

Urprimat
Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.

Linus Torvalds

7

15.05.2016, 22:21

was genau ist in diesem fall mein dir_angle?

Das wird wohl der RichtungsWinkel sein.
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

8

15.05.2016, 22:24

@Koschi

Das ist mir bewusst.
Jedoch verstehe ich nicht wie ich den Richtungswinkel ermittle...
Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.

Linus Torvalds

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

15.05.2016, 22:28

Richtungswinkel = Rotationswinkel Deiner Kamera
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

10

15.05.2016, 22:30


abs_angle = dir_angle+rot_angle
degrees_in_radians = abs_angle*π/180;
vec_x = cos(degrees_in_radians)
vec_y = sin(degrees_in_radians)



wenn dir_angle der Rotationswinkel meiner Camera ist...
was ist dann rot_angle?
Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.

Linus Torvalds

Werbeanzeige