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

ERROR

Alter Hase

  • »ERROR« ist der Autor dieses Themas

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

1

16.07.2013, 21:13

Scrolling und Rotation

Nabend,

Ich habe ein Raumschiff, dass rotieren soll und die Sprites im Hintergrund sollen im richtigen Winkel scrollen. Das Raumschiff ist in der Mitte fixiert und die Sprites stellen den Background dar.

So viel zur Theorie.

Mein Problem ist nun die Umsetzung, bitte erklärt es mir sehr gut, denn so etwas ähnliches habe ich noch nie gemacht.

Ich weiss dass ich mit SFML ganz einfach beim sprite mit .setRotation(float) die Rotation setzen kann, aber wie berechne ich diese und wie berechne ich die Richtung, in die der Background scrollen muss?

patrick246

Treue Seele

Beiträge: 328

Wohnort: nahe Heilbronn/BW

Beruf: TG Profil Informatik-Schüler

  • Private Nachricht senden

2

16.07.2013, 21:20

Beweg einfach das Raumschiff und pass das View so an, dass das Raumschiff im Mittelpunkt bleibt

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

3

16.07.2013, 21:44

Oder bewege die Sterne einfach mit der inversen Transformation.

ERROR

Alter Hase

  • »ERROR« ist der Autor dieses Themas

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

4

17.07.2013, 14:02

Danke für eure Tipps. Zurzeit bin ich dabei die Bewegungen zu implementieren.

Jetzt ist mir noch eine Sache unklar:

Wenn ich Up/W drücke, soll das Schiff ja Geradeaus fliegen, leider fliegt es derzeit nur nach oben (x -= speed * t;). Wie kann ich das denn auf den derzeitigen Winkel des Schiffes umrechnen? Also so, dass das Schiff auch Geradeaus fliegt, wenn es nach unten/link/rechts/was auch immer "guckt".

EDIT: Am besten wäre ja wenn ich zur Berechnung die Gradzahl aus .getRotation() nehmen kann, nur die Umrechnung dann kann ich mir nicht "vorstellen"

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »ERROR« (17.07.2013, 14:11)


TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

5

17.07.2013, 14:30

Gibt 2 Moeglichkeiten, die letzendlich die gleichen Formeln ergeben. Entweder du nimmst einen Einheitsvektor entlang der Bewegungsrichtung, multiplizierst den mit der Geschwindigkeit und addierst das zur Position. Oder du berechnest die Bewegung im lokalen Koordinatensystem des Raumschiffs und transformierst den so entstandenen Vektor in das globale Koordinatensystem.

patrick246

Treue Seele

Beiträge: 328

Wohnort: nahe Heilbronn/BW

Beruf: TG Profil Informatik-Schüler

  • Private Nachricht senden

6

17.07.2013, 14:34

Entweder du nimmst einen Einheitsvektor entlang der Bewegungsrichtung


So wie ich das verstanden habe, sucht er die Umrechnung eines Winkels zum Einheitsvektor

ERROR

Alter Hase

  • »ERROR« ist der Autor dieses Themas

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

7

17.07.2013, 18:33

Also ich habe so etwas ähnliches noch nie gemacht, deswegen verstehe ich nicht zu 100% was ihr meint ?(

Also es geht mir im Moment darum, wie ich eine Bewegung auf einen Winkel umrechne. Also wenn sich das Schiff sagen wir mit einer Geschwindigkeit von 150*t bewegt, wie kann ich dann ausrechnen, dass immer geradeaus fliegt, egal in welchem Winkel es steht.
Würde das Schiff um 90° gedreht sein (nach Rechts gucken), und ich würde den Knopf für "Gas" drücken(wahrscheinlich Pfeiltaste-Hoch oder W) dann soll es ja nicht nach oben(aus der Sicht des Bildschirms) fliegen, sondern in die eigene Blickrichtung, also in diesem Fall nach Rechts.

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

8

17.07.2013, 19:01

Indem du (wie ich ja schon sagte), die Bewegung nicht im globalen Koordinatensystem ausfuehrst sondern im lokalen des Raumschiffs. Viel mehr kann man allgemein dazu halt nicht sagen, wenn man nicht weiss, wie du die Daten organisierst und was deine Eingabe und gewuenschten Ausgabeparameter sind.

9

17.07.2013, 20:58

Wenn du den Winkel und den Betrag der Geschwindigkeit kennst, dann musst du dir daraus nur die beiden Geschwindigkeitskomponenten vx,vy mit cosinus und sinus aus dem Geschwindigkeitsbetrag 150 berechnen. Das heißt dein Geschwindigkeitsbetrag von 150 teilt sich je nach Ausrichtung deines Schiffs anders auf die beiden Komponenten auf. Und die Ortskoordinaten von deinem Schiff berechnen sich dann daraus wie gehabt, nur dass du eben anstelle des Betrags die berechneten Speedkomponenten benutzt.

Werbeanzeige