我现在正在努力进行3垫式台球游戏。我有一个小问题。我放开鼠标用棍子击球后,球没有按预期的方向前进。

解决这个问题的最佳方法是什么?

我尝试在公式中使用mouseXmouseY来使球走到应该去的地方。但这仅适用于一个象限。球大多到达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;

09-27 02:08