2012-12-18 47 views
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'); 
} 

我已經卡住小時這個小問題,任何幫助,將不勝感激! :)

+2

這可能有助於http://wiki.processing.org/w/Rect-Rect_intersection – elclanrs

+0

我已經非常精確的那個功能,但是當我的盒子旋轉時,它不是很準確:/ – nevernew

+2

你應該使用Separation Axis測試定向包圍盒(旋轉反射)。我寫了一個小小的SAT可視化,幫助我瞭解OBB和SAT。這裏是JSBin,告訴我,如果這是你需要的:http://jsbin.com/esubuw/4 – Rikonator

回答

0

參數b沒有名爲z的屬性。