3
我在javascript中創建了一個遊戲,我無法找到任何類似於一個函數的東西,它將採用2個邊界框對象,並在它們相交時返回true。我發現所有的例子似乎爲我的小遊戲過於複雜,大多數都是特定於語言:/一個JavaScript函數用於旋轉矩形的2D碰撞檢測?
//my box object
function bounding_box (x, y, width, height, rotation) {
var box = {};
box.x = x;
box.y = y;
box.w = width
box.h = height;
box.r = rotation; //degrees from origin - all objects in the game have the same rotation origin
return box;
}
function boxes_collide (a, b) {
//if collision return true
//else return false
//my box collision function at the moment
//doesn't work with rotation
return !(
((a.y + a.h) < (b.y)) ||
(a.y > (b.z + b.h)) ||
((a.x + a.w) < b.x) ||
(a.x > (b.x + b.h))
);
}
//create boxes
var boxa = bounding_box(0, 0, 5, 3, 45);
var boxb = bounding_box(1, 3, 4, 2, 90);
//test for collision
if (boxes_collide (boxa, boxb)) {
alert('collision');
}
我已經卡住小時這個小問題,任何幫助,將不勝感激! :)
這可能有助於http://wiki.processing.org/w/Rect-Rect_intersection – elclanrs
我已經非常精確的那個功能,但是當我的盒子旋轉時,它不是很準確:/ – nevernew
你應該使用Separation Axis測試定向包圍盒(旋轉反射)。我寫了一個小小的SAT可視化,幫助我瞭解OBB和SAT。這裏是JSBin,告訴我,如果這是你需要的:http://jsbin.com/esubuw/4 – Rikonator