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

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

1

14.03.2009, 21:55

verfolgungsrakete soll verfolgen.....

hi@all,
ich bins mal wieder und hab wie immer ne neue Frage:

also ich will eine verfolgungsrakete in 2d meine asteroiden verfolgen lassen. Das Ziel weiß ich schon, nur ich will dass die Rakete sich, wenn es aus dem raumschiff rauskommt von dem Winkel, in einem Bogen zum asteroid hinbewegt.
ich häng noch ein Bild an wenns geht :



schwarz = asteroid
gelb = raumschiff
pfeil = raketenbahn

kann mir vllt. einer dat theoretisch erklären wenn ihr meine Frage verstanden habt

...also mein ansatz war dass ich erstmal den winkel von raumschiff zum asteroiden ausrechne und meine weiteren waren nur müll

edit: ich versteh nich wieso des bild nicht angezaigt wird
New Project: Operation CityRacer

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

14.03.2009, 22:01

Hol dir den Winkel, um den sich deine Rakete drehen müsste, um genau auf das Ziel zu zeigen und dann drehst du die Rakete um einen Prozentsatz vom dem Wert in die richtige Richtung. Und schon sollte das klappen.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

15.03.2009, 01:43

Zitat von »"drakon"«

Hol dir den Winkel, um den sich deine Rakete drehen müsste, um genau auf das Ziel zu zeigen und dann drehst du die Rakete um einen Prozentsatz vom dem Wert in die richtige Richtung. Und schon sollte das klappen.

Dann würde die Rakete sich aber ungleichmäßig drehen und den Zielwinkel niemals erreichen. Mach es doch so: rechne den aktuellen Winkel der Rakete aus und den Winkel zum Ziel. Dann, je nach dem, ob der aktuelle Winkel kleiner oder größer als der Zielwinkel ist, drehst du die Rakete ein wenig nach rechts oder nach links.

4

15.03.2009, 01:55

Und dabei natürlich die Zeit im Auge behalten. Also z.B. 10 Grad/Sekunde drehen (also die Framerate mit einberechnen, wenn du keine Konstante hast)
Außerdem ist es von 10 Grad zu 350 Grad natürlich kürzer, über 0 zu gehen, als einfach hoch zu zählen, weil die 10 Grad ja kleiner als die 350 sind. Da muss du also auch etwas aufpassen, sonst dreht sich die Rakete halt manchmal in die falsche und damit längere Richtung.
Lieber dumm fragen, als dumm bleiben!

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

5

15.03.2009, 11:01

Zitat von »"David Scherfgen"«


Dann würde die Rakete sich aber ungleichmäßig drehen und den Zielwinkel niemals erreichen. Mach es doch so: rechne den aktuellen Winkel der Rakete aus und den Winkel zum Ziel. Dann, je nach dem, ob der aktuelle Winkel kleiner oder größer als der Zielwinkel ist, drehst du die Rakete ein wenig nach rechts oder nach links.


Ja, aber das ist kaum bemerkbar. Bei deiner Version würde man den genauen Winkel ja aber auch nicht erreichen, wenn man da nicht eine Schwelle einbaut, wo er dann direkt auf den exakten Winkel springt..
Das sie sich ungleichmässig dreht ist dann vielleicht Geschmackssache, was besser aussieht.

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

6

15.03.2009, 12:14

Na klar erreicht Davids Variante exakt die richtige Drehung. Das was Jona da geschrieben hat ist in Kombination mit dem von David wohl der jenige der am meisten Sinn macht. So hätte ich es auch gemacht.

Socke

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

7

15.03.2009, 12:41

thx, mein rakete fliegt jetzt zum Zielwinkel aber nicht zum asteroiden ich häng nochmal ein bild dran:

http://img353.imageshack.us/img353/611/unbenanntp.png


jetzt passier des und ich weis nich wieso :cry:
....sagt wenn ich mal code zeigen soll
New Project: Operation CityRacer

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

8

15.03.2009, 12:44

Du solltest den Zielwinkel bei jedem Frame neu berechnen. Wäre meine Vermutung für den Fehler.

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

9

15.03.2009, 14:33

versteh ich nicht...
hier jetz mal mein quellcode

Hier wird des Ziel gesetzt und errechnet , also den winkel...ich hab es jetzt mal auf 200, 200 gesetzt, dass ich weis wo die rakete hinfliegen muss

C-/C++-Quelltext

1
2
3
     raketerotationx = 200 - Schusss->GetPosition().x;
     raketerotationy = 200 - Schusss->GetPosition().y;
     result = atan2 (raketerotationx,raketerotationy)* 180.0f/ 3.14;

hier wird des schiff gedreht:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
if(Schusss->GetRotation() <= result)
      Schusss->Rotate(-70 * g_pTimer->GetElapsed());
    
else
      Schusss->Rotate(+70 * g_pTimer->GetElapsed());
    

Xposi += 100 * sin (-(Schusss->GetRotation() * 3.14159265f) / 180.0) *g_pTimer->GetElapsed();
    
Yposi -= 100 * cos (-(Schusss->GetRotation() * 3.14159265f) / 180.0) *g_pTimer->GetElapsed();


ich glaubes liegt an der gleichbleibenden geschwindigkeit aber ich weis nicht um wieviel ich die geschwindigkeit erhöhen muss oder so....
....ich glaub ich steh im wald..entweder bin ich jetzt dumm oder ich hab heut nur ein schlechten tag

Edit2: ich glaub ich bin Dumm :D ^^


Edit3 : noch jm. da?
New Project: Operation CityRacer

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

10

17.03.2009, 19:40

Nur mal 'ne simple Überlegung:

Würde es nicht vollkommen reichen, die X- und Y-Koordinaten solange zu vergrößern/verringern (je nach dem), bis die Koordinaten übereinstimmen? Und wenn die Koordinaten gewisse Werte erreicht haben(nämlich den Rand des Bildschirmes) dann wäre es ja eh "The same procedure [...]" (Diner for one)...

Das wäre eine zielgenaue Verfolgung... Oder doch nicht? Ist nur 'ne Überlegung...

Werbeanzeige