在杆子击打之后,如何使球去往应该去的地方?

时间:2019-05-09 06:43:58

标签: java game-development

我现在正在努力进行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);
}

释放鼠标按钮后,球必须移到操纵杆所面对的任何地方。

1 个答案:

答案 0 :(得分:2)

我认为您的问题出在WHITExSpeed / WHITEySpeed

您无需计算从鼠标位置到此处白球的增量。

不应该关注吗?

WHITExSpeed = (mouseX - white.getCenterX()) * 0.005; 
WHITEySpeed = (mouseY - white.getCenterY()) * 0.005;