碰撞检测 - 避免盒子

时间:2014-12-14 20:24:57

标签: java opengl collision-detection

我正在制作赛车游戏,我的赛车课程类似于长方形甜甜圈。在矩形的中间,我有另一个较小的矩形作为墙。我正试图在我的内墙上添加碰撞检测,这样我的车就会与内墙碰撞。下面是内墙的一些基本测量以及显示轨道概念的图片:

- 从14到18单位的翻译x是矩形的宽度。

- 从-60到60单位翻译y是矩形的总长度。

我目前的问题是,当x位置从原点(或y)以14个单位撞击墙壁时,我试图让汽车发生碰撞,它会对整个x或y线产生碰撞。因此,例如,一旦我撞到位于x方向的14个单位的墙壁,如果我要在赛道的其中一个转弯点到达那个位置,它就不会让我通过。我现在正在尝试以下方式。

void checkColl(){
    if (posX < -14){
         velocityX *= -1 //bounce off the wall on the far left side of the picture
    }
    if (posX > 48){
        velocityX *= -1 //bounce off wall on far right
    }
    if ((posY > 60 || posY < -60) && (posX > 14 && posX < 18)){ //bounce off the rectangle in middle of race course
        velocityY = velocityY * -1;
        velocityX = velocityX * -1;
    }
}

enter image description here

1 个答案:

答案 0 :(得分:1)

打破y坐标的检查。试试这个:

if ((posY > -60 && posY < 60) && (posX > 14 && posX < 18)){
        //bounce off the rectangle in middle of race course

这定义了黑色矩形内的点 - “甜甜圈”的洞。