将重力应用于弹跳球

时间:2013-12-12 16:05:28

标签: java gravity

我正在制作一个弹跳球计划。我成功地做了一个上下起伏的球。我已设置好让球无法超出界限,所以当它击中屏幕边缘时,它只会反弹回来等等。

现在,问题是,我希望球最终停止移动。例如,我启动程序,球落下并弹回到其起始高度的80%。当它再次下降时,它会因重力加速然后再回升,但可能只达到它原始高度的60%左右,最终它会停止移动。

我该如何制作这样的东西?我用谷歌搜索了几个小时但没有找到任何帮助。所以现在我恳请你帮我一把。此外,如果您决定给我一个方便的提示,请尝试具体而且非常清楚。我没有那么长时间的编程。提前谢谢。

这是我的代码:

编辑:OBSERVE我没有这个类的主要方法,因为我不需要它。我通过一个对象在另一个类中运行它。

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JPanel;
import javax.swing.Timer;

public class Game extends JPanel implements ActionListener{

    int DIAMETER = 40;
    int yPos;
    int yVel = 3;
    int GRAVITY =1;

    Timer tm = new Timer(5,this);

    public void paintComponent(Graphics g){
        super.paintComponent(g);

        //Setting the characteristics for the ball
        g.setColor(Color.red);
        g.fillOval(0, yPos, DIAMETER, DIAMETER);
        tm.start();
        repaint();
    }

    public void actionPerformed(ActionEvent e) {

        //If it decides to go out of the screen, change direction.
        if(yPos<0 || yPos>430)yVel=-yVel;

        //This basically is the "engine". It moves the ball.
        yPos = yPos + yVel;

    }
}

1 个答案:

答案 0 :(得分:2)

从系统中取出一些能量

正如撞击地面一样,动能为E = 0.5 * m * v * v,其中m为质量,v为速度。

E减少一定数量,比如new_E = 0.8 * E。然后使用重新排列的动能公式计算新的初始向上速度。

这是非常现实的。当然,你并不需要0.5系数,但我保留了它以保持物理学家的快乐。您也不需要m