处理平台游戏中两个矩形的交集

时间:2011-03-31 08:45:45

标签: javascript html5 canvas game-physics

我正在使用HTML5 / Canvas / Javascript / jQuery中的简单平台游戏。你可以看到它here

我知道如何检查两个矩形的交集(这里有几个问题),我的游戏检查并处理两个矩形的交集,但仅在非常特殊的情况下,并且只是因为这个角色并不比我的块宽。

我的问题:如何计算两个矩形的交点,我可以分辨出交叉点的方向?我能想到的唯一方法包括20多个if语句(这可能不是正确的方法吗?)。

我需要知道交点的方向,因为我向前“窥视”以查看我的精灵坐标(x + dx,y + dy)是否会与矩形相交,如果它们将相同,则将精灵的新坐标设置为仅下一个刻度矩形的边缘。

1 个答案:

答案 0 :(得分:2)

要获得矩形相对于另一个矩形的位置,可以使用精灵矩形的中心并将其定位到块中。
以下函数用于获取点到另一个点的位置。它应该对你有所帮助。只需要调整以使用精灵的中心和块的中心来验证精灵的位置(或者验证精灵中心在块的左上角和右下角的位置)

function positionOf(point, relativeTo) {
    var dx = point.x - relativeTo.x; // diff on x axis
    var dy = point.y - relativeTo.y; // diff on y axis

    if(dx >= dy) { // point is on top right half from relativeTo
             return dx >= - dy ? 'EAST' : 'NORTH';
    }
    else { // point is on bottom left half from relativeTo
             return dx >= - dy ? 'SOUTH' : 'WEST';
    }
}

编辑:当考虑x和y轴原点位于视口的左上角时,所有这些都很好