好的,所以我正在用 JavaScript 制作一个 2D 平台游戏,对于我的碰撞检测,我有两种类型的对象:由焦点区域和焦点区域检测到的游戏对象;检测对象都有 4 个坐标,形成一个框 x1 和 y1 是左/上,x2 和 y2 是左/下
游戏对象的盒子坐标是不变的数字,必须计算为相对于游戏对象的位置,而焦点区域的坐标会更新为确切的点
我的问题是由于某种原因,当这段代码(下面)遇到一个小于游戏对象(坐标)的焦点区域时,除非焦点区域与游戏对象框的左上角像素冲突,否则它不会被检测到,怎么办我修这个?(顺便说一句,这一切都在一个双重“for循环”中)
var O_x=game.objects[ii].phy.pos.x,
O_aur_x_1=game.objects[ii].col.aur.x1,
O_aur_x_2=game.objects[ii].col.aur.x2,
F_x_1=game.focusAreas[i].x1,
F_x_2=game.focusAreas[i].x2,
O_y=game.objects[ii].phy.pos.y,
O_aur_y_1=game.objects[ii].col.aur.y1,
O_aur_y_2=game.objects[ii].col.aur.y2,
F_y_1=game.focusAreas[i].y1,
F_y_2=game.focusAreas[i].y2;
if ( (O_x + O_aur_x_1) >= F_x_1 && (O_x + O_aur_x_1) <= F_x_2 || F_x_1 >= (O_x + O_aur_x_1) && F_x_1 <=(O_x + O_aur_x_2))
{// if object's x1 is within xfocus range
}
else if ( (O_x + O_aur_x_2) >= F_x_1 && (O_x + O_aur_x_2)<= F_x_2 || F_x_2 >= (O_x + O_aur_x_1) && F_x_1 <=(O_x + O_aur_x_2))
{// if object's x2 is within xfocus range
}
else{continue;}
if ( (O_y + O_aur_y_1) >= F_y_1 && (O_y + O_aur_y_1) <= F_y_2 || F_y_1 >= (O_y + O_aur_y_1) && F_y_1 <=(O_y + O_aur_y_2))
{// if object's y1 is within yfocus range
}
else if ( (O_y + O_aur_y_2) >= F_y_1 && (O_y + O_aur_y_2) <= F_y_2 || F_y_2 >= (O_y + O_aur_y_1) && F_y_1 <=(O_y + O_aur_y_2))
{// if object's y2 is within yfocus range
}
else{continue;}