Nehmen wir an, ich benutze diesen Charakter.
(Quelle: iconbug.com )
Wie würden Sie die Kollisionserkennung dafür implementieren? Die Verwendung eines Begrenzungsrahmens scheint keine gute Annäherung zu sein, da die Form des Vogels bei weitem nicht in der Nähe eines Quadrats liegt.
Ich dachte daran, eine Art Quad-Tree-Datenstruktur innerhalb des Objekts zu haben, die Teile des Bildes darstellt. Jedes Blatt kann entweder false
(falls es den weißen / transparenten Raum außerhalb des Vogels bedeckt) oder seintrue
(falls es einen Bereich des Vogels darstellt, dh Schnabel, Auge usw.) sein. Dann testen Sie irgendwie das einzige Hindernis in der Szene auf Kollision mit dem Vogel.
Aber meine Probleme in meinem Ansatz sind:
- Ich weiß nicht, wie ich den Quad-Baum initialisieren soll.
- Sobald der Quad-Baum initialisiert ist, bin ich mir nicht sicher, wie ich ihn durchlaufen und verwenden soll, wenn sich das Hindernis innerhalb der Koordinaten des Bildes befindet.
Wie würden Sie die Kollisionserkennung mit nicht quadratischen Zeichen durchführen?
LE: Der andere Ansatz, den ich gesehen habe, war die Verwendung mehrerer Begrenzungsrahmen. Zum Beispiel hätte ich einen oder mehrere Begrenzungsrahmen für den Schnabel, dann einige für die Haare oder den Schwanz. Aber es kann langweilig werden. Wenn dies in meinem Fall ein gültiger Ansatz ist, wie würde ich diese Begrenzungsrahmen generieren? Ich bezweifle, dass ich sie in meinem Programm fest codieren muss.
LE2: Ich kümmere mich um ziemlich genaue Kollisionen. Ich kann mir nicht vorstellen, wie ein einzelner Begrenzungsrahmen oder Kreis diese Form zumindest annähernd annähern kann, daher funktioniert dieser Ansatz nicht.