Kollisionserkennung von Bitmaps

Bitte aktiviere JavaScript!
Hallo,
ich wollte eine Kollisionserkennung zwischen 2 Bitmaps machen. Dazu soll der überlappende Bereich der der beiden Bitmaps gefunden werden und dort dann geguckt werden, ob die Pixel der beiden Bitmaps transparent sind. Aber es scheint nicht ganz zu funktionieren, wie man auf dem Bild sieht: Zwischen den beiden Bitmaps(Vogel, Röhre) sind noch einige Pixel dazwischen, die Methode checkCollision() gibt aber dennoch schon true zurück.

Java:
public  boolean checkCollision(Bitmap bitmap1, int x1, int y1, Bitmap bitmap2, int x2, int y2) {

  Rect bitmap1Rect = new Rect(x1, y1, x1 + bitmap1.getWidth(), y1 + bitmap1.getHeight());
  Rect bitmap2Rect = new Rect(x2, y2, x2 + bitmap2.getWidth(), y2 + bitmap2.getHeight());


  if(Rect.intersects(bitmap1Rect, bitmap2Rect)) {

      Rect overlap = getOverlapRect(bitmap1Rect, bitmap2Rect);

      for(int i=overlap.left; i < overlap.right; i++) {
          for(int j=overlap.top; j < overlap.bottom; j++) {

              int bitmap1Pixel = bitmap1.getPixel(i - x1, j - y1);
              int bitmap2Pixel = bitmap2.getPixel(i - x2, j - y2);

              if(bitmap1Pixel==Color.TRANSPARENT && bitmap2Pixel==Color.TRANSPARENT) {
                  return true;
              }

          }
      }

  }
  return false;
}

private  Rect getOverlapRect(Rect rect1, Rect rect2) {

    int left = (int) Math.max(rect1.left, rect2.left);
    int top = (int) Math.max(rect1.top, rect2.top);
    int right = (int) Math.min(rect1.right, rect2.right);
    int bottom = (int) Math.min(rect1.bottom, rect2.bottom);

    return new Rect(left, top, right, bottom);
}
Wo liegt der Fehler ?
Danke im Voraus.
 

Anhänge

A

Anzeige




Vielleicht hilft dir unser Java-Tutorial hier weiter —> (hier klicken)
Java:
              if(bitmap1Pixel==Color.TRANSPARENT && bitmap2Pixel==Color.TRANSPARENT) {
                  return true;
              }
Wieso true, wenn die Pixel transparent sind?
 
Danke,stimmt es muss
Java:
if(bitmap1Pixel!=Color.TRANSPARENT && bitmap2Pixel!=Color.TRANSPARENT) {
    return true;
}
heißen weil ich die transparenten Pixel ja ignorieren will.
 
A

Anzeige




Hier lernst du alle wichtigen Java-Grundlagen.
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben