Для моего приложения у меня есть прямоугольник, нарисованный SVG, который я использую в качестве хитбокса, и я хочу создать функцию JavaScript, которая возвращает логическое значение true всякий раз, когда хитбокс касается другого прямоугольника, который был повернут вокруг своего центра на некоторый угол. с помощью CSS-преобразований. Я обнаружил этот код на http://www.inkfood.com/collision-detection-with-svg/:
function intersectRect(r1, r2) {
var r1 = r1.getBoundingClientRect(); //BOUNDING BOX OF THE FIRST OBJECT
var r2 = r2.getBoundingClientRect(); //BOUNDING BOX OF THE SECOND OBJECT
//CHECK IF THE TWO BOUNDING BOXES OVERLAP
return !(r2.left > r1.right ||
r2.right < r1.left ||
r2.top > r1.bottom ||
r2.bottom < r1.top);
}
Это отлично работает для обычных прямоугольников, но я не уверен, как использовать это для работы с моим повернутым прямоугольником. Когда я проверяю повернутый прямоугольник с помощью инструментов разработчика в своем веб-браузере, я вижу, что он правильно выделяет прямоугольник. При этом, когда я пытаюсь извлечь ограничивающий прямоугольник клиента с помощью JavaScript, он возвращает размеры прямоугольника в его неповернутой форме. Мой вопрос: как мне получить правильные размеры моего повернутого прямоугольника, чтобы я мог определить, когда он сталкивается с моим прямоугольником хитбокса? Есть ли другой способ определить, когда мой хитбокс касается моего повернутого прямоугольника? Любая помощь приветствуется.
canvas
, вам, вероятно, будет легче.isPointInPath
, в частности, может избавить вас от головной боли: w3schools.com/tags/canvas_ispointinpath.asp а> - person jmcgriz   schedule 22.03.2018rect
иrotate
- person jmcgriz   schedule 22.03.2018