2D Spiel Schuss Problem

devnetik

Enthusiast
Thread Starter
Mitglied seit
30.12.2008
Beiträge
79
Hallöchen Leute,

ich vertreib mir grade die Zeit in dem ich ein kleines 2D Spiel programmier.
Man läuft mir einem kreis umher und kann Pixel verschießen. Als Zielvorrichtung soll die Maus herhalten, habe aber folgendes Mathematisches Problem:
Ich habe 2 Punkte gegeben, einmal den meine Spielers und den meiner Maus.

S(X/Y) und M(X/Y)

Nun will ich vom Spieler aus einen Pixel zur Mausposition fliegen lassen sobald ich geklickt hab. Ich hab es versucht mit dem Verhältnis also

V = (Y0-Y1)/(X0-X1)

dann lass ich jede Frame die Position des Pixels der geschossen wurde berechnen und zwar so:

PixelY++;
PixelX = PixelX + iV;

das Funktioniert aber nur wenn ich nach unten schieße. Ansonsten verläuft der Schuss spiegelverkehrt zum Spieler.
Hoffe mir kann jemand helfen.

Gruß michi
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Hallo devnetik,

ich weiß jetzt nicht, ob dich das weiterbringt, aber ich hab mal so was ähnliches in php geschrieben. Dort sollte ein "Raumschiff" mit X/Y Koordinaten Schritt für Schritt zu Dest_X/Dest_Y Koordinaten fliegen...
Ist zwar bestimmt nicht die beste Lösung, aber damals hatte es funktioniert.
Du musst, so glaube ich, einfach abfragen ob Y0 kleiner/größer Y1 und X0 kleiner/größer X1 ist und dann entsprechend PixelY++; oder PixelY--; wählen.

PHP:
if($dest_x < $x) { $a = (($x - $dest_x) * - 1); }
if($dest_x > $x) { $a = ($dest_x - $x); }
if($dest_y < $y) { $b = (($y - $dest_y) * - 1); }
if($dest_y > $y) { $b = ($dest_y - $y); }
$c = sqrt(($a * $a) + ($b * $b));
if($a == 0){ $a = $a + 0.1; }
if($b == 0){ $b = $b + 0.1; }
$newx = ($x + round((1 / ($c / $a)),0));
$newy = ($y + round((1 / ($c / $b)),0));
 

Ähnliche Themen

Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh