also ich hab eine grafik, von da aus soll bei einem mausklick ein geschoss in richtung der mausklick position abgefeuert werden.
dafür muss ich wohl lineare funktionen verwenden, aber es klappt irgendwie nicht.
hier der code für das bewegen:
cX ist die position des mausklicks, pX die position des spielers. beide verändern ihren wert nicht nachdem das geschoss abgefeuert wurde.
die drecksdinger fliegen irgendwie immer falsch, scheint mir fast so als wären sie teilweise spiegelverkehrt.
die move2 methode hab ich übrigens schritt für schritt nach einem flussdiagramm erstellt dass ich vorher entworfen hab.
also kann irgendwer helfen?
dafür muss ich wohl lineare funktionen verwenden, aber es klappt irgendwie nicht.
hier der code für das bewegen:
cX ist die position des mausklicks, pX die position des spielers. beide verändern ihren wert nicht nachdem das geschoss abgefeuert wurde.
Code:
public void move2()
{
if(cX==pX)
{
if(cY==pY)
{
}
else
{
if(cY<pX)
{
y--;
x=(int) ((y-n)/m);
}
else
{
y++;
x=(int) ((y-n)/m);
}
}
}
else
{
if(cY==pY)
{
if(cX<pX)
{
x--;
}
else
{
x++;
}
}
//da oben wird nur überprüft ob das geschoss nur gerade auf einer achse bewegt werden muss
else
{
m=(float)deltaY/(float)deltaX; //die steigung(deltax und y werden im konstruktor des geschoss objektes erstellt)
n=pY -m*pX; //y-achsenabschnitt
if(m>1)
{
if(cY>pY)
{
y++;
x=(int) ((y-n)/m);
System.out.println("asdf");
}
else
{
y--;
x=(int) ((y-n)/m);
}
}
else
{
if(m<-1)
{
if(cY>pY)
{
y++;
x=(int) ((y-n)/m);
}
else
{
y--;
x=(int) ((y-n)/m);
}
}
else
{
if(m>-1)
{
if(m<0)
{
if(cX>pX)
{
x++;
y=(int) (m*x+n);
}
else
{
x--;
y=(int) (m*x+n);
}
}
else
{
if(cX>pX)
{
x++;
y=(int) (m*x+n);
}
else
{
x--;
y=(int) (m*x+n);
}
}
}
}
}
}
}
}
die drecksdinger fliegen irgendwie immer falsch, scheint mir fast so als wären sie teilweise spiegelverkehrt.
die move2 methode hab ich übrigens schritt für schritt nach einem flussdiagramm erstellt dass ich vorher entworfen hab.
also kann irgendwer helfen?