Hallo,
ich programmiere gerade mein erstes Spiel. Es soll ein 2D-Shoot'em-up, eine Mischung aus SuperMario und Soldat werden. Laufen, Springen, Kollisionen usw klappt schon alles.
Nun möchte ich aber die Möglichkeit geben zu schießen. Dazu hat man ein Fadenkreuz, dass man per Maus bewegt, während die Spielfigur mit den Pfeiltasten navigiert wird. Folglich soll der Schuss von der Spielfigur aus in Richtung Fadenkreuz fliegen.
Mein Ansatz war eine lineare Funktion:
Die Steigung m wurde durch die Koordinaten des Spielers und des Fadenkreuzes berechnet (y2-y1/x2-x1) und mit jedem Durchlauf der Hauptschleife wurde der Schuss auf der X-Achse um 1 Pixel bewegt, in Y-Achse um den Wert m.
Das hat nun aber 2 Nachteile:
1. Umso steiler der Schuss ist, desto schneller fliegt die Kugel.
2. Man kann nur in ca 4 verschiedenen "Winkeln" schießen, aufgrund der Ungenauigkeit von Int-Variablen. Auch wenn m eine float-Variable ist, scheitert es am zeichnen des Schusses, der ja als Koordinaten Int-Werte braucht.
Was ist an meiner Methode falsch oder gibt es noch bessere Alternativen?
Vielen Dank
ich programmiere gerade mein erstes Spiel. Es soll ein 2D-Shoot'em-up, eine Mischung aus SuperMario und Soldat werden. Laufen, Springen, Kollisionen usw klappt schon alles.
Nun möchte ich aber die Möglichkeit geben zu schießen. Dazu hat man ein Fadenkreuz, dass man per Maus bewegt, während die Spielfigur mit den Pfeiltasten navigiert wird. Folglich soll der Schuss von der Spielfigur aus in Richtung Fadenkreuz fliegen.
Mein Ansatz war eine lineare Funktion:
Die Steigung m wurde durch die Koordinaten des Spielers und des Fadenkreuzes berechnet (y2-y1/x2-x1) und mit jedem Durchlauf der Hauptschleife wurde der Schuss auf der X-Achse um 1 Pixel bewegt, in Y-Achse um den Wert m.
Das hat nun aber 2 Nachteile:
1. Umso steiler der Schuss ist, desto schneller fliegt die Kugel.
2. Man kann nur in ca 4 verschiedenen "Winkeln" schießen, aufgrund der Ungenauigkeit von Int-Variablen. Auch wenn m eine float-Variable ist, scheitert es am zeichnen des Schusses, der ja als Koordinaten Int-Werte braucht.
Was ist an meiner Methode falsch oder gibt es noch bessere Alternativen?
Vielen Dank