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

11.08.2015, 14:00

Frage zu manchen Formeln für SFML(.NET)

Hi

Ich hab ein paar Fragen mit welchen Formeln man diese Probleme berechnen/beheben kann.

Sprite in Mausrichtung schauen (Rotation)

Wie kann man es machen das ein Sprite in die Richtung guckt wo der Mauszeiger hinzeigt. Das heißt wenn ich mit dem Cursor in der oberen Ecke bin sollte der Sprite (z.b. eine Spielfigur mit Kopf) in diese Richtung gucken. Wie geht das?

In Rotationsrichtung bewegen
Wie kann man einen Sprite in die Richtung bewegen in die er zeigt (also die Rotation). Oben, Links, Unten und Rechts sind ja klar das kann einfach mit X und Y-Koordinaten lösen. Aber wie berechnet man wie viele Pixel ein Sprite nach oben und/oder nach rechts muss wenn er bei 71,4° Grad ist. Er sollte sich dann ja auch in diesem Winkel weiterbewegen.

Abprallen (Bounce-Effekt) an Wänden die nicht 90°/grade sind
Wenn ich jetzt einen Ball habe der in einem 45°-Winkel auf eine grade Wand (also 90°/180°/270°/360°) zu fliegt. Wie berechnet man den neuen Winkel nach dem Abprall. Bei einer graden Wand ist das einfach. Ich (glaub) da muss dann einfach 360 - alterWinkel und man hat den neuen. Aber wie berechnet man den neuen Winkel wenn der Ball in 27,3° fliegt und die Wand 88,2° Grad schräg ist?

Ich hoffe ihr habt Antworten auf diese Fragen :)

mfg

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

11.08.2015, 14:14

Ich gebe dir nur ein Stichwort, mit dem du das hoffentlich selber herausfinden kannst: Sinus und Kosinus

ERROR

Alter Hase

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

3

11.08.2015, 14:24

1 und 2 sind im Prinzip das gleiche. Ich denke mal, du kennst Vektoren noch nicht und weisst deshalb nicht wie du es berechnen sollst. Google am besten nach etwas wie "2D Vektor Rotation" und nimm ein Ergebnis, dass du verstehst, zB grade Wikipedia ist da oft schwer. Dieseshier habe ich fix gefunden und es scheint ganz leicht zu sein.

Problem 3 ist wieder mit Vektoren zu lösen. Einfach ihren Winkel berechnen und es gilt wie immer Einfallswinkel = Ausfallswinkel. Wahlweise kann noch mehr Physik eingebaut werden, sodass dann der Ausfallswinkel kleiner wird, wenn das Objekt schwerer ist oder auf Stein statt auf Gummi aufschlägt.

4

11.08.2015, 14:38

An David Scherfgen:
Durch die Seite du dir gezeigt hast, hab ich folgendes machen können:

C#-Quelltext

1
2
3
4
float nx = (float)Math.Cos(pic.Angle);
float ny = (float)Math.Sin(pic.Angle);
X += nx;
Y += ny;



das Problem ist nur das er dann immer rückwärts läuft. (Auch wenn ich "X -= nx" oder "X += -nx" schreibe)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

11.08.2015, 14:39

das Problem ist nur das er dann immer rückwärts läuft. (Auch wenn ich "X -= nx" oder "X += -nx" schreibe)

Das kann nicht sein, da musst du etwas falsch gemacht haben.

6

11.08.2015, 14:56

Kann sein. Ist bei SFML "45°" oben rechts oder unten rechts.
Wenn es unten rechts ist dann hab ich nichts falsch gemacht und SFML hat nur ein komisches Gradsystem (da 0° doch eigentlich oben und nicht rechts ist)

Nimelrian

Alter Hase

Beiträge: 1 216

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

  • Private Nachricht senden

7

11.08.2015, 15:03

Die Winkelfunktionen benutzen das Bogenmaß, steht auch so in der Doku.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

8

11.08.2015, 15:05

Dein Problem ist wohl eher, dass du den Winkel in Grad hast, aber Sin und Cos erwarten einen Winkel im Bogenmaß.

9

11.08.2015, 15:14

§\text{Grad}=\text{Radiant}\cdot\frac{180}{\pi} \Leftrightarrow \text{Grad}\cdot\frac{\pi}{180}=\text{Radiant}§
Somit versuch doch mal:

C-/C++-Quelltext

1
2
3
4
float nx = (float)Math.Cos(pic.Angle * 3.1415926535897f/180.f);
float ny = (float)Math.Sin(pic.Angle * 3.1415926535897f/180.f);
X += nx;
Y += ny;


MfG
Check

10

11.08.2015, 15:14

Wie bekomm ich einen Winkel im Bogenmaß. Wie geht die Umwandlung von Winkel zu Bogenmaß?
Ich hab hier mal ein Gif (hoffe es funktioniert hier) auf dem man sehen kann das, dass ein bisschen komisch aussieht:

(Link)

Werbeanzeige