Ich schreibe eine Kollisionserkennung von zwei Kreisen. Aber was ich wirklich will, ist, dass das Hauptobjekt nur mit anderen Objekten auf der Hälfte seiner Oberfläche, wie das Bild unten zeigt kollidieren:Wie Kollision von Halbkreisen in HTML5 Canvas zu erkennen?
Die Halb cricle Oberfläche mit anderen Kreisen aus verschiedenen Richtungen zu kollidieren wird . Wie sollte ich die Funktion schreiben, um dies zu simulieren?
Was ich im Moment für zwei Kreise Erkennung ist wie folgt herausgefunden:
var dx = circle1.x - circle2.x;
var dy = circle1.y - circle2.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < circle1.radius + circle2.radius) {
// collision detected!
}
Aber wie wäre es nur die Hälfte des Hauptkreis einlässt? Wie steht es damit, dass nur ein Bruchteil der Kreisfläche in die Kollision verwickelt wird? Sagen nur Math.PI/2 Grad des Kreises wird die Kollision erkennen?
überprüfen müssen Ja, es bewegt sich in allen möglichen Richtungen. Beachten Sie, dass wir die Kollision des flachen Teils nicht erkennen. – newguy
Dann ist es härter - alles, was ich herausfinden kann, ist, dass Sie die zwei Kantenpunkte bestimmen (die im aktuellen Fall 'centerX, centerY + -radius' sind, aber mit nicht senkrechten Linien knifflig werden) und mit dem Rotationswinkel definieren Sie a gestalten. Sie können dann bestimmen, ob ein zufälliger X, Y-Punkt innerhalb des Halbkreises liegt. –
Aber Kollision ist im Allgemeinen eine schwierige Aufgabe, daher würde ich vorschlagen, nach relevanten Bibliotheken zu suchen, wenn Sie eine zunehmende Komplexität jenseits einfacher Formen wünschen. PhaserJS zum Beispiel hat großartige Physik-Engines. –