我正在使用HTML5 / Canvas / Javascript / jQuery中的简单平台游戏。你可以看到它here。
我知道如何检查两个矩形的交集(这里有几个问题),我的游戏检查并处理两个矩形的交集,但仅在非常特殊的情况下,并且只是因为这个角色并不比我的块宽。
我的问题:如何计算两个矩形的交点,我可以分辨出交叉点的方向?我能想到的唯一方法包括20多个if语句(这可能不是正确的方法吗?)。
我需要知道交点的方向,因为我向前“窥视”以查看我的精灵坐标(x + dx,y + dy)是否会与矩形相交,如果它们将相同,则将精灵的新坐标设置为仅下一个刻度矩形的边缘。
答案 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轴原点位于视口的左上角时,所有这些都很好