我正在制作赛车游戏,我的赛车课程类似于长方形甜甜圈。在矩形的中间,我有另一个较小的矩形作为墙。我正试图在我的内墙上添加碰撞检测,这样我的车就会与内墙碰撞。下面是内墙的一些基本测量以及显示轨道概念的图片:
- 从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;
}
}
答案 0 :(得分:1)
打破y坐标的检查。试试这个:
if ((posY > -60 && posY < 60) && (posX > 14 && posX < 18)){
//bounce off the rectangle in middle of race course
这定义了黑色矩形内的点 - “甜甜圈”的洞。