2012-12-18 2 views
3

저는 자바 스크립트로 게임을 만들고 있어요. 경계 상자 객체를 2 개 가져 와서 교차하는 경우 true를 반환하는 함수와 같은 것을 찾을 수 없습니다. 내가 찾은 모든 예제 내 작은 게임에 너무 복잡한 것 그리고 대부분은 특정 언어 위치 :/회전 된 직사각형으로 2 차원 충돌 감지를위한 자바 스크립트 기능?

나는이 작은 문제에 시간 동안 갇혀 있었어요
//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

분리 축 Oriented Bounding Boxes (회전 된 사각형)에 대한 테스트. OBB와 SAT를 이해하는 데 도움이되도록 약간의 SAT 시각화를 잠깐 썼습니다. JSBin은 다음과 같습니다. http://jsbin.com/esubuw/4 – Rikonator

답변

0

매개 변수 b에는 z라는 속성이 없습니다.