作为游戏开发的典型"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
}
您如何检测碰撞? 我认为,如果你能够检测到碰撞,那是因为你知道球和球棒的位置。
编辑:
好的,我以前没有做过这种确切类型的程序,如果它是一个 Hello World 程序,为了简单起见,您可能只想让球棒和球有一个点位置,if 语句将是
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
}