hallo!
ich versuche zur zeit ein tower defence spiel in java zu programmieren.
da sich das "projekt" noch relativ am anfang der programmierung befindet, versuche ich die grundlegenden funktionen, wie das automatische zielen eines turms, zu implementieren.
das grundgerüst ist genauso aufgebaut, wie Quaxli es in seinem tutorial vorzeigt. nebenbei muss ich ein großes lob zur qualität aussprechen!
nun zu meinem problem:
ich verwende die geradengleichung der form
ax+by+c=0 (im post von benni gefunden)
zur berechnung des weges vom turm zum ziel.
jedoch erhalte ich lauter falsche y-werte, wenn ich mir diese mit x ausrechne. der neue punkt befindet sich einfach nicht auf der gerade zwischen turm und ziel.
hier der code:
jedoch:
wenn sich die punkte in einem winkel von 45° zueinander befinden, liegt der neue punkt genau auf der gerade.
habe leider keine ahnung mehr wo der fehler liegen könnte.
bitte um hilfe
mfg
rolimg
ich versuche zur zeit ein tower defence spiel in java zu programmieren.
da sich das "projekt" noch relativ am anfang der programmierung befindet, versuche ich die grundlegenden funktionen, wie das automatische zielen eines turms, zu implementieren.
das grundgerüst ist genauso aufgebaut, wie Quaxli es in seinem tutorial vorzeigt. nebenbei muss ich ein großes lob zur qualität aussprechen!
nun zu meinem problem:
ich verwende die geradengleichung der form
ax+by+c=0 (im post von benni gefunden)
zur berechnung des weges vom turm zum ziel.
jedoch erhalte ich lauter falsche y-werte, wenn ich mir diese mit x ausrechne. der neue punkt befindet sich einfach nicht auf der gerade zwischen turm und ziel.
hier der code:
Code:
Point p1 = new Point(300, 200);
Point p2 = new Point(150, 50);
//45° zueinander
//Point p1 = new Point(300, 300);
//Point p2 = new Point(150, 150);
double dx = p2.getX() - p1.getY();
double dy = p2.getY() - p1.getY();
double a = dy;
double b = -dx;
// müsste egal sein von welchem punkt ich die koordinaten verwende?!
double c = -(a * p1.getX() + b * p1.getY());
double x = p1.getX();
double y = 0;
if (!checkCollisions(p2))
{
/*
* den y-wert ausrechnen durch umformen der gleichung
* a*x + b*y + c = 0
* auf
* y = -(a*x - c)/b
*/
y = -(a * p1.getX() - c) / b;
x--;
p1.setLocation(x, y); // die neue position setzen
System.out.println(p1);
}
wenn sich die punkte in einem winkel von 45° zueinander befinden, liegt der neue punkt genau auf der gerade.
habe leider keine ahnung mehr wo der fehler liegen könnte.
bitte um hilfe
mfg
rolimg