我现在正在努力进行3垫式台球游戏。我有一个小问题。我放开鼠标用棍子击球后,球没有按预期的方向前进。
解决这个问题的最佳方法是什么?
我尝试在公式中使用mouseX
和mouseY
来使球走到应该去的地方。但这仅适用于一个象限。球大多到达JFrame
的左上角。
我觉得我需要使用多个if
语句和一个名为angle
的变量,但是我不确定如何使用。
public void mouseReleased(MouseEvent e)
{
LineDraw = false;
MouseDragged = false;
WHITExSpeed = -mouseX * 0.005;
WHITEySpeed = -mouseY * 0.005;
//repaint();
}
public void mouseDragged(MouseEvent e)
{
LineDraw = true;
MouseDragged = true;
mouseX = e.getX();
mouseY = e.getY();
repaint();
}
...
//This if statement in is paintCompoment
if(LineDraw)
{
Line2D.Double Stick = new Line2D.Double(white.getCenterX(),white.getCenterY(), mouseX, mouseY);
g2d.setColor(Stick_Color);
g2d.setStroke(new BasicStroke(5));
g2d.draw(Stick);
}
释放鼠标按钮后,球必须移到杆面向的任何位置。
最佳答案
我认为您的问题出在WHITExSpeed
/ WHITEySpeed
上。
您无需计算从鼠标位置到此处白球的增量。
不应该跟随吗?
WHITExSpeed = (mouseX - white.getCenterX()) * 0.005;
WHITEySpeed = (mouseY - white.getCenterY()) * 0.005;