2011-02-23 46 views
3

嘿,我試圖讓畫布中的兩個對象碰撞的一面。以下是我用於碰撞檢測的內容,但它僅檢查碰撞,沒有特定的一面。Javascript畫布碰撞側檢測

凡O1和O2是taht具有屬性的對象:

x - 在X軸上
y位置 - 位置在Y軸上
w - 矩形的寬度
h - 的高度矩形

var collidesWith = function (o2) { 
    var o1 = this; 
    if ((o1.y + o1.h) < o2.y) { 
     return 0; 
    } 
    if (o1.y > (o2.y + o2.h)) { 
     return 0; 
    } 
    if ((o1.x + o1.w) < o2.x) { 
     return 0; 
    } 
    if (o1.x > (o2.x + o2.w)) { 
     return 0; 
    } 
    return 1; 
}; 

編輯:下面的代碼我想出了有關元素的頂部碰撞檢測:

if (
    (o1.y - o1.dy >= o2.y) && 
    (o1.y - o1.dy <= o2.y + o2.h) && 
    (o1.x + o1.w >= o2.x) && 
    (o1.x <= o2.x + o2.w) 
) { 
    // We have collision at the top end 
} 

回答

5

你需要條件 - 是這樣的:

if ((o1.y > o2.y) && (o1.y < o2.y + o2.h)) { 
    return 'top'; // o1's top border collided with o2's bottom border 
} 

爲相若方式等方面。

+0

那麼,我不得不做更多的計算才能使它正常工作,但是你給我指出了方向。謝謝:) – Pockata 2011-02-27 11:44:15

+0

如果你能分享你必須做的計算,那將是非常棒的。會很好地完成這個問題:) – Henryz 2011-03-02 13:27:22