初期水平速度で落下物をシミュレートしようとしています。水平方向に移動する方法は理解していますが (加速なし)、方程式 y = gt^2/2 + vt + y0 のために垂直方向に移動するのに問題があります。二次方程式のため問題があります。
私がやろうとしたことは、SwingTimer によってアクションが実行されるたびに 1 ずつ増加する時間変数を作成することです。私が実際に時変数を持つように。しかし、それが最善の方法だとは思いませんか?
誰かが私を正しい方向に押し進めることができますか?
以下に、私がすでに書いたコードを示します。
public class Simulation extends JPanel implements ActionListener
{
Timer timer = new Timer(5,this);;
private int Xpos=0, Ypos=0, velX, velY;
private int Px,Py;
JButton dropknop;
private boolean drop = false;
public Simulation()
{
this.setBackground(Color.white);
velX = 2;
velY = 2;
dropknop = new JButton("DROP");
dropknop.addActionListener(this);
this.add(dropknop);
}
public int getXpos() {
return Xpos;
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawRect(Xpos, 0, 20, 20);
if(drop)
{
g.fillRect(Px, Py, 5, 5);
}
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getSource() == dropknop)
{
Px = getXpos();
this.drop = true;
}
if(Xpos<0 || Xpos>986)
{
velX = -velX;
}
if(Ypos<0 || Ypos>708)
{
velY = - velY;
}
if(drop)
{
Px += velY;
Py += velX;
}
Ypos += velY;
Xpos += velX;
repaint();
}
}
前もって感謝します!