Collision detection in html5-canvas
Ich versuche zu bauen, ein Spiel, wo der Benutzer sollte der Kreis im inneren eine vertikale Leiste, aber ich habe Probleme in der collision-detection-Funktion. Hier mal mein jsfiddle : http://jsfiddle.net/seekpunk/QnBhK/1/
if (collides(Bluecircle, longStand)) {
Bluecircle.y = longStand.y2;
Bluecircle.x = longStand.x2;
}
else if (collides(Bluecircle, ShortStand)) {
Bluecircle.y = ShortStand.y2;
Bluecircle.x = ShortStand.x2;
}
function collides(a, bar) {
return a.x == bar.x1 && a.y == bar.y1;
}
- Als ich aus dem code sehen in der Frage, die Sie vergleichen die genauen ball zu koordinieren, um genaue Wand-zu koordinieren. Die Chancen, dass diese Koordinaten Zusammenfallen, sind ziemlich klein, versuchen Sie, die Bewertung der Tatsache, dass der ball innerhalb einer Fläche. Oder eine bar, die im inneren einer Kugel des radius. Wie
Math.abs(a.x - bar.x1) < radius
Du musst angemeldet sein, um einen Kommentar abzugeben.
[ Editiert um Tippfehler korrigieren und Unterlassung ]
Hier ist, wie zu treffen-testen Sie ein Rechteck und einen Kreis für die Kollision:
Demo: http://jsfiddle.net/m1erickson/n6U8D/
[Hinzugefügt Antwort gegeben Klarstellung]
...Und dies ist, wie um zu testen, ob der Kreis ist vollständig innerhalb des Rechtecks
Demo: http://jsfiddle.net/m1erickson/VhGcT/