Pixelgenaue Kollisionserkennung Android
Ok, also ich arbeite an einem Spiel auf Android. Ich brauche zur Umsetzung pixelgenaue Kollisionserkennung. Ich habe bereits die bounding-Boxen um die einzelnen Bilder, die jeweils bounding box transformiert wird, entsprechend der aktuellen Drehung des Bildes. Das funktioniert alles Super. Ich habe auch die pixel-Daten aus jeder bitmap gespeichert in einem array. Kann jemand mir helfen herauszufinden, der effizienteste Weg zu gehen über erkennen, wenn das Pixel überlappen? Vielen Dank im Voraus für jede Hilfe!!!
InformationsquelleAutor der Frage DRiFTy | 2011-05-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die grundlegende Idee ist, erstellen Sie eine bit-Maske für jedes Objekt, in dem Sie angeben, in jedem pixel, wenn das Objekt tatsächlich da ist oder nicht. Dann vergleichen Sie jedes pixel der Bitmasken für die beiden Objekte.
Könnten Sie minimieren die Anzahl der Pixel, die Sie brauchen, um zu überprüfen durch die Berechnung der rechteckige Bereich, in dem die zwei bounding boxes überlappen. Die Pixel in diesem Bereich sind, was Sie brauchen, um zu überprüfen.
Iteration durch alle Pixel, und überprüfen Sie, ob der pixel gefüllt ist, die in beiden Objekten. Wenn einer von Ihnen sind, dann hast du eine Kollision.
Wenn Ihr Rechtecke, die ausgerichtet sind mit den x - /y-Achse zu finden, die sich überschneiden, finden die linken, rechten, oberen und unteren Rand der überlappung. Es würde in etwa so Aussehen (das hätte ich geschraubt bis die Sonderfälle, noch nicht ausprobiert):
InformationsquelleAutor der Antwort Cheryl Simon
Habe ich basiert mein code auf Mayra ' s Beispiel und aus bitmap-pixel collision handling. Ich hoffe, das wird helfen.
InformationsquelleAutor der Antwort Jan-Terje Sørensen
Änderte ich arcones' - code, damit die Methode funktioniert auch mit Bitmaps anstelle von Sprites.
Für meine Bedürfnisse funktioniert es schnell genug.
InformationsquelleAutor der Antwort itmuckel
Wenn jemand von Euch interessiert ist, möchte ich den code, den ich schrieb:
Wichtig für Sie zu wissen ist, dass Sprite.getWidth() und Sprite.getHeight() einfach die Breite/Höhe der Bitmap, die das Sprite enthält. Können Sie leicht anpassen, den code für deine Bedürfnisse, es sollte Recht einfach zu verstehen, wie der code funktioniert 🙂
InformationsquelleAutor der Antwort forumfresser