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.03.2010, 21:17

360° "Bewegen"

Hi Leute,

Ich versuche schon seit einiger Zeit mir einen Weg zu überlegen wie ich z.B. einen Ball in alle Richtungen bewegen kann (also mehr als nur hoch,runter,links,rechts). 360° eben. Aber ich bin bis heute auf keine gute Idee gestoßen :P
Weiß jemand zufälliger Weise wie man das realisieren könnte?

P.S.: Benutze SDL, C++

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

2

19.03.2010, 21:25

Ich verstehe das Problem nicht ganz... Kannst du das evtl. noch näher erläutern?

Du willst einen Ball einfach nur in alle Richtungen Bewegen? Daran hindert dich doch nichts...

Gib dem Ball einen 2D-Vektor vSpeed, der in jedem Frame (multipliziert mit der zeit) zur Position des Objektes hinzugefügt wird...

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

3

19.03.2010, 21:33

Also ich meine z.B. den Ball exakt mit dem Winkel 20° zu Bewegen (wenn Rechts 0° ist)
Da müsste man ja nicht nur x += 200.0f * Zeit und y += 200.0f * Zeit berechnen, weil der sich ja dann nur nach Schräguntenrechts bewegen würde.

4

19.03.2010, 21:39

Geht doch mit sin und cos ganz normal oder ?

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

5

19.03.2010, 21:40

das stichwort ist trigonometrie ;)

Stazer

Alter Hase

Beiträge: 468

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

6

20.03.2010, 01:15

mithilfe der sinus und cosinus funktionen kannst du das programmieren

C-/C++-Quelltext

1
2
3
float Rotation ( [ROTATION DER SPRITE ] * 3.14159265f / 180.0f ) ;
float X ( std::sin ( Rotation ) * [SPEED] ) ;
float Y ( std::cos ( Rotation ) * [SPEED] ) ;


das in der game loop ausrechnen und den sprite dann bewegen und als koordinaten X und Y angeben ;)
[ROTATION DER SPRITE] ist die derzeitige Rotaiton der Sprite
[SPEED] die Geschwindigkeit wie schnell der sprite bewegt werden soll

schuldigung für die vielen rechtschriebfehler =)

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

7

20.03.2010, 01:54

hab schon mti ihm über icq gesprochen. er schaut sich erstmal die vektorrechnung an. es ist besser wenn man versteht was man da tut. so kann man sich auch neue funktionen ausdenken.

ich multipliziere meinen richtungsvektor erst beim aufruf der "Move"funktion mit der geschwindigkeit. warum macht ihr das so?

Werbeanzeige