我正在制作一款赛车游戏,其中我的赛车路线类似于矩形 donut 。在矩形的中间,我有另一个较小的矩形,用作墙。我正在尝试向内墙添加碰撞检测,以便我的汽车会与内墙碰撞。以下是内墙的一些基本尺寸以及显示轨道概念的图片:
-将 x 从 14 转换为 18 个单位即为矩形的宽度。
-将 y 从 -60 转换为 60 个单位即为矩形的总长度。
我目前的问题是,如果我尝试在 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;
}
}
最佳答案
y 坐标检查已损坏。试试这个:
if ((posY > -60 && posY < 60) && (posX > 14 && posX < 18)){
//bounce off the rectangle in middle of race course
这定义了黑色矩形内的点 - “ donut ”的孔。
关于java - 碰撞检测-避开盒子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27473687/