我正在创建一个类似于乒乓球的游戏,但并不完全像它。不幸的是,我的逻辑是错误的,但我无法弄清楚我应该做什么。目前,球垂直落下。我有一个椭圆和一个矩形。如果椭圆与矩形相交,那么它应该像没有空气阻力的物理一样“反弹”。目前,它不会这样做,而是从某个位置重新开始,而不是向上弹跳。
要说清楚,即使只是帮助我了解如何在窗口中进行球的抛射运动也会有所帮助。我相信我可以弄清楚如何使它与“桨”相互作用,但是我无法让球开始运动并且移动就像被“桨”击中一样
而不是编写代码,我真的很想理解这一点,因为它似乎是任何游戏的一个基本方面。我将编写看似相关的代码部分,然后根据需要编写更多内容。
ellipse = new Ellipse2D.Double((int)Ox, (int)Oy, 50, 50);
protected class timeBall implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
scale = 20.0;
speedY += 9.8*10.0/scale;
speedX = 50;
Oy = Oy + speedY * 10;
Ox = Ox + speedX *10;
Oy = Oy / scale;
Ox = Ox / scale;
// System.out.println(speedX + " " + speedY);
// System.out.println(Ox + " " + Oy);
try{
System.out.println(paddleRect.getX());
if(ellipse.intersects(paddleRect)){
Random random = new Random();
speedY *= -0.2;
Oy = Oy * -(random.nextInt(4));
}
}catch(RuntimeException NullPointerException){
}
repaint();
}
请注意,这不是整个代码,但为了简单起见,我只是推出了应该包含的内容。