N
Nono
Neues Mitglied
- 1
Hallo zusammen,
ich habe eine SurfaceView Klasse, in der erstmal nur ein Kreis gezeichnet wird. Wenn man auf den Bildschirm tippt, soll aus diesem Kreis ein neuer Kreis entstehen und sich in die Richtung des Punktes bewegen, wo man hingetippt hat. Ich habe das bis jetzt wie folgt gelöst:
Also im wesentlichen wird hier die Differenz von der Position der Spielfigur und dem Touchpunkt berechnet und dieser Wert geteilt durch 10 als Bewegungsgeschwindigkeit für den neuen Ball übergeben. Also dieses diffx/10 und diffy/10 stehen für die Pixel, die sich der Ball pro Frame bewegen soll. Das klappt auch soweit. Das Problem ist nur, dass die Bewegungsgeschwindigkeit sich stark unterscheidet, je nachdem ob man nah an der Spielfigur tippt, also ob die Differenz gering ist, oder weiter weg, also das die Differenz groß ist. Die Geschwindigkeit soll aber ungefähr gleich bleiben. Mir fällt leider nichts dazu ein. Hat jemand eine Idee?
Viele Grüße
ich habe eine SurfaceView Klasse, in der erstmal nur ein Kreis gezeichnet wird. Wenn man auf den Bildschirm tippt, soll aus diesem Kreis ein neuer Kreis entstehen und sich in die Richtung des Punktes bewegen, wo man hingetippt hat. Ich habe das bis jetzt wie folgt gelöst:
Code:
@Override
public boolean onTouchEvent(MotionEvent event){
synchronized(getHolder()){
if(spielfigur.getRadius() >= 30){
Point ziel = new Point((int)event.getX(), (int)event.getY());
int diffx = ziel.x - (int)spielfigur.getX();
int diffy = ziel.y - (int)spielfigur.getY();
Ball schuss = new Ball(this, spielfigur.getX(), spielfigur.getY(), diffx/10, diffy/10, Color.RED);
baelle.add(schuss);
spielfeld.setBaelle(baelle);
}
}
return true;
}
Also im wesentlichen wird hier die Differenz von der Position der Spielfigur und dem Touchpunkt berechnet und dieser Wert geteilt durch 10 als Bewegungsgeschwindigkeit für den neuen Ball übergeben. Also dieses diffx/10 und diffy/10 stehen für die Pixel, die sich der Ball pro Frame bewegen soll. Das klappt auch soweit. Das Problem ist nur, dass die Bewegungsgeschwindigkeit sich stark unterscheidet, je nachdem ob man nah an der Spielfigur tippt, also ob die Differenz gering ist, oder weiter weg, also das die Differenz groß ist. Die Geschwindigkeit soll aber ungefähr gleich bleiben. Mir fällt leider nichts dazu ein. Hat jemand eine Idee?
Viele Grüße