java - 碰撞检测-避开盒子

标签 java opengl collision-detection

我正在制作一款赛车游戏,其中我的赛车路线类似于矩形 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;
    }
}

enter image description here

最佳答案

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/

相关文章:

java - 有人可以向我解释这段使用移位将两个变量相乘的代码吗?

c++ - 使用 CGL 编译 MacOS 应用程序

opengl - 我怎样才能在OpenGL中进行透视变换?

javascript - 检查两个物体是否发生碰撞和减速的最有效方法是什么?

iphone - iOS - 拖放碰撞检测如何检测您选择的项目何时拖过另一个 subview ?

C# 数学,碰撞检测,xna

java - checkin mvn 版本时出现 "Exception in thread "main"java.lang.UnsupportedClassVersionError : Bad version number in . class file"错误

c# - Java 或 C# 中长轮询/Comet 的最佳选择?

java - ArrayList 使用意外的堆大小

opengl - OpenGL 状态(VB、IB、纹理)更改的成本?