Frage

Ich habe einen gedrehten Bogen mit Android 2D -Grafiken gezeichnet

c.drawArc(new RectF(50, 50, 250, 250), 30, 270, true, paint);

Der Bogen wird drehen Während das Spiel läuft,

Ich möchte wissen, wie ich erkennen kann, ob andere Spielobjekte (Rektionen, Kreise) damit kollidieren können ??

Dies ist das erste Mal für mich, ein Spiel zu schreiben :)

Ich habe so etwas in gesehen http://hakim.se/experiments/html5/core/01/

Danke im Voraus

War es hilfreich?

Lösung

Bogenkollisionen sind etwas schwieriger als normale Kollisionen, aber mit Booleschen Algebra können Sie leicht überprüfen, ob sich ein bestimmter Punkt in Ihrem Bogen befindet.

Schauen Sie sich das folgende Bild an.

Hier gibt es 3 Objekte. Die schwarze Kugel, die Ihren Bogen visualisiert, wenn etwas damit kollidiert, kann es sich in Ihrem Bogen befinden. Die rote Kugel oben auf der schwarzen Kugel, dies visualisiert das 'Innere' des Bogens, wenn sich etwas in der roten Kugel befindet, ist es definitiv nicht "im Bogen". Jetzt gibt es auch das grüne Dreieck, das den "Grenzwert" Ihres Bogens visualisiert. Alles im grünen Dreieck befindet sich auf jeden Fall nicht in Ihrem Bogen.

Das Testen, wenn sich in der schwarzen Kugel etwas befindet, ist einfach. (Distanz des Objekts in die Kugelmitte <= Radius der Kugel). Gleiches gilt für die rote Kugel. Das grüne Dreieck ist etwas schwierig, Sie müssen dies zuerst konstruieren. Finden Sie den Start- und Ende der Radians Ihres Bogens. und drehen Sie einen Einheitsvektor durch Startradiant. Drehen Sie dann einen Einheitsvektor nach Endradian. Verlängern Sie diese beiden Vektoren um 2 * den Radius der schwarzen Kugel. Verwenden Sie nun den Mittelpunkt Ihres Bogens und die Positionen von zwei Vektoren, wobei die Mittelposition als 3 Punkte des Dreiecks hinzugefügt wurde. Sie können dann eine der Point-Driangle-Kollisionslöser verwenden: http://www.bing.com/search?q=point+Triangle+Collision&go=&form=qblh&scope=Web

Denken Sie also daran: Kollision mit ARC = (Kollision mit schwarzer Kugel) &&! (Kollision mit roter Kugel) &&! (Kollision mit grünem Dreieck).

ARC Collision

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top