Android Kollision zwischen 2 Bitmaps Prüfen?

bruce85

Bekanntes Mitglied
Hallo nochmal,
ich habe ein kleines Problem mit meinem Spiel, und zwar versuche ich die Kollision zwischen 2 Bitmaps hinzubekommen, leider weiss ich nicht wie ich das ambesten lösen kann.

Die Bilder sind mehr Rund als eckig, daher würde ich den Transparente teil ignorieren wollen und nur das was Sichtbar ist, zu Prüfen ob das Bild mit einer anderen Bild Kollidiert.

Gibt es in Java eine spezielle Methode dafür?

Ich danke euch schonmal für die Hilfe.

MfG
 
Zuletzt bearbeitet:
Hallo nochmal,
ich habe ein kleines Problem mit meinem Spiel, und zwar versuche ich die Kollision zwischen 2 Bitmaps hinzubekommen, leider weiss ich nicht wie ich das ambesten lösen kann.

Die Bilder sind mehr Rund als eckig, daher würde ich den Transparente teil ignorieren wollen und nur das was Sichtbar ist, zu Prüfen ob das Bild mit einer anderen Bild Kollidiert.

Was du möchtest, ist pixel-genaue Kollisionserkennung: Jedes Pixel des einen Objekts muss darauf untersucht werden, ob es sich mit irgendeinem Pixel des anderen Objekts die Koordinaten teilt. Das geht, ist aber meist sehr aufwendig, wenn man nicht diverse Optimierungen nutzen kann oder die Objekte sehr groß sind. Früher gab es für solche Probleme auch spezialisierte Hardware, die man zu Hilfe holen konnte.

Du kannst dich aber dieser "perfekten" Lösung annähern. Sind deine Objekte gleichgeformt, hilft dir eventuell eine passende Formel aus der Geometrie weiter. Am einfachsten geht das bei rechteckigen Flächen (siehe weiter unten). Ein weiteres Beispiel wären Kreisflächen.

Lassen sich die Umrisse deiner Objekte als Polygone beschreiben, kannst du dafür geeignete Algorithmen benutzen. Das lässt sich beliebig verkomplizieren um der Objekt-Form möglichst nahe zu kommen (einschließlich Objekten mit "Löchern").

Ein pragmatischerer Ansatz ist, die Fläche, die ein Objekt einnimmt, durch Zusammensetzen aus mehreren Rechteckflächen anzunähern. Dann benutzt man die Rechteck-Kollisionsmethode (mehrfach).

Gibt es in Java eine spezielle Methode dafür?

Ausschließlich für rechteckige Flächen, ja.
 
Als Ergänzung noch (weil mir das Editieren des Beitrages nach mehr als lächerlichen 60 Minuten verwehrt bleibt):

Es gibt auch eine fertige Methode für das Überprüfen von Polygonen auf Überlappungen mit Rechtecken.

Für "Nicht-Rechteck"-vs.-"Nicht-Rechteck" berechnet die intersect()-Methode eines Area-Objekts die zwischen beiden entstehende überlappende Fläche. Das dürfte aber rechenaufwendig sein. Musst du mal testen, ob es für deine Zwecke reicht.

Für Android gibts außerdem (mit Einschränkungen): Region.quickReject() und seine Verwandten.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben