Java游戏(LWJGL)中两个对象之间的碰撞点检测和定位

时间:2014-12-16 20:31:11

标签: java collision-detection lwjgl pong collision

作为游戏开发的典型“Hello World”,我决定在我学习使用LWJGL之后制作乒乓球游戏。

截至目前,我已经准备好了两个实体(球棒和球),但是球在x轴上来回奔跑。我显然希望它击中蝙蝠并根据它被击中的方式在不同的角度运行。问题是我可以检测到两个实体之间的碰撞,但我不知道如何判断球在什么时候与球棒发生碰撞。是否有特定的算法,功能甚至第二个可以帮助我的库?

非常感谢!

编辑:根据要求,这是我当前碰撞检测的代码

    if(ball.getX()<=bat.getX()+bat.getWidth() && ball.getX() >= bat.getX() && 
        ball.getY()>=bat.getY() && ball.getY()<=bat.getY()+bat.getHeights()){
        //for now, the code in here just makes the ball go the opposite direction
    }

1 个答案:

答案 0 :(得分:0)

你是如何检测碰撞的?我认为如果你能够发现碰撞,那将是因为你知道球和蝙蝠的位置。

编辑:

好吧,我之前没有完成这种类型的程序,如果它是一个Hello World程序,为了简单起见你可能只想让蝙蝠和球只有一个点位置而if语句将是< / p>

if(ball.getX() == bat.getX() && ball.getY() == bat.getY()){
    //for now, the code in here just makes the ball go the opposite direction
}

如果你真的想要一个有宽度的球棒,你可以做类似

的事情
double xDist = ball.getX() - bat.getX();
double yDist = ball.getY() - bat.getY();
if(xDist * xDist + yDist * yDist <= BAT_WIDTH * BAT_WIDTH) {
    //use trigonometry to find the angle between the ball and the mid point of the bat, and then find the point on the bat's surface that corresponds to that angle
}