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

spacegaier

Alter Hase

  • »spacegaier« ist der Autor dieses Themas

Beiträge: 572

Beruf: Student

  • Private Nachricht senden

1

18.07.2006, 17:09

Pfeiltastennachrichtenkuranz ausgleichen...

Hey, ich habe nun ein (undefinierbares) Fahrzeug geladen, dass auch einwandfrei angezeigt wird. Je nach Pfeiltaste fährt ews nach oben, unten, links oder rechts. So weit, so gut.

Fährt manb nun z.B. nach oben (indem man lange auf die entsprechende Pfeiltaste drückt und dann auf die linke wechselt, ändert sich sofort das Bild, aber es dauert etwas bis sich das Auto bewegt. Ich hätte aber gerne, dass das Fahrzeug den Schwung mitnimmt (später wird es dazu auch noch ein Kurvensprite geben).

Wie setze ich dieses Kurvenverhalten um? Soll ich mir, wenn die Pfeiltaste geändert wurde, mir selber Pfeiltastennachrichten schicken, damit die Kuranzzeit der "normalen" Pfeiltastennachrichten ausgeglichen wird? Oder gibt es bessere Ansätze?

mfg spacegaier

PS: Falls das Problem unzureichend geschildert wurde hier der Link:

www.spacegaier.de/downloads.html (MoveRect [Workingtitle])

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

2

18.07.2006, 17:30

Hmmm... Wie wird die Rotation umgesetzt? Hast du da einen Winkel? Wenn ja, interpolier in doch einfach anstatt ihn zu setzten.... erzeug daraus einen Vektor und addier ihn zum aktuellen Bewegungsvektor. Das Ergebnis ist dann dein neuer Bewegungsvektor, welchen du mit der Zeit multiplizierst und zur Position addierst um die neue zu erhalten!
Ergebnis: Annähernd schönes Kurvenverhalten
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

spacegaier

Alter Hase

  • »spacegaier« ist der Autor dieses Themas

Beiträge: 572

Beruf: Student

  • Private Nachricht senden

3

18.07.2006, 20:43

Mhhhmmm....Jetzt merke ich, wie delitantisch mein Ansatz ist. Ich habe das ganze bislang so gemacht (totaler Schwachsinn, wie ich jetzt merke):

Ein Bild in vier Verschiedenen Varianten/Richtungen gespeichert und geladen und dann das passende gezeichnet. :oops: :oops: :oops:

Ich brauche jetzt einmal einen groben Ansatz, wie ich des mit den Vektoren einbauen soll (allgemein, später das mit der Kurve).

Brauche einen Vektor, der die momentane Richtung angibt, aber was heißt jetzt hier Vekrot? Einfach eine Variable, die ich halt irgendwie belege, oder wie geht man da rann?

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

4

19.07.2006, 10:31

Arbeite mit 2D-Vektoren. Du arbeitest im xy-Koordsystem ohne z-Achse, nun brauchst du für die ausrichtung von Grafiken einen Winkel, um welchen diese gedreht werden (um die z-Achse). Um dann dafür den Vektor zu bekommen rechnet man einfach:

Quellcode

1
Richtungsvektor(cos(alpha), sin(alpha))


Der Bewegungsvektor ist dann einfach:

Quellcode

1
Bewegungsvektor = Richtungsvektor * Geschwindigkeitsfaktor


Die neue Position bekommst du dann mit:

Quellcode

1
Position += Bewegungsvektor * fTime


Beim Lenken incrementierst oder dekrementierst du einfach den Winkel und beim Gasgeben oder Bremsen den Geschwindigkeitsfaktor! Volá!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

spacegaier

Alter Hase

  • »spacegaier« ist der Autor dieses Themas

Beiträge: 572

Beruf: Student

  • Private Nachricht senden

5

19.07.2006, 16:10

Wie kann ich den Winkel meines Bildes ausrechnen? Gibt es dazu eine fertige Methode? Oder muss ich da mit Trigonomie ran?

alpha = 1 / Ankathete (also der linke Seite der Ausgangsposition des Bildes) / Hypothenuse (also die linke Seite der momentanen Bildposition) ?

Und was muss die Funktion

Zitat

Richtungsvektor(cos(alpha), sin(alpha))
machen? Sieht auch nach etwas trigonometrischen aus.

Bin auf diesem Gebiet noch sher unbewandert, daher die Fragen.

Phili

unregistriert

6

19.07.2006, 16:57

Also die Funktion

C-/C++-Quelltext

1
Richtungsvektor(cos(alpha), sin(alpha)) 

ist würd ich sagen ziemlich eindeutig... Einfach nen normalisierter Vektor, der vom Vektor (1, 0) den Winkel Alpha hat...

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

7

19.07.2006, 17:36

C-/C++-Quelltext

1
Richtungsvektor(sin(alpha), cos(alpha))

Wuerd ich mal sagen, damit der Vektor bei 0 nach "oben" und bei PI nach "unten" zeigt
"Have you tried turning it off and on again?"

Phili

unregistriert

8

19.07.2006, 17:55

@chase
Dann doch lieber

C-/C++-Quelltext

1
Richtungsvektor(cos(alpha+1.670796f), sin(alpha+1.670796f))

Sonst dreht er sich falschrum...

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

9

20.07.2006, 09:18

Zitat von »"Phili"«

@chase
Dann doch lieber

C-/C++-Quelltext

1
Richtungsvektor(cos(alpha), sin(alpha+1.670796f))

Sonst dreht er sich falschrum...


Was soll 1.670796 sein??
wenns PI/2 sein sollte (also 1.570796f), dann versteh ichs aber auch nicht, denn:

sin(alpha + pi/2) == cos(alpha)
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Phili

unregistriert

10

20.07.2006, 13:18

@Black-Panther
Hast recht, men kann ja mal ne 5 und ne 6 vertauschen... :D 8)

Werbeanzeige