1

我正在开发一个简单的 HTML5/Canvas/Javascript/jQuery 平台游戏。你可以在这里看到它。

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

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

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

4

1 回答 1

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 轴原点位于视口的左上角时,所有这些都很好

于 2011-03-31T09:20:26.310 回答