Как я могу заставить мяч идти туда, куда он должен идти после удара палкой? - PullRequest
0 голосов
/ 09 мая 2019

В настоящее время я пытаюсь работать над игрой в бильярд с 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);
}

Мяч должен идти туда, куда палка была направлена ​​после отпускания кнопки мыши.

1 Ответ

2 голосов
/ 09 мая 2019

Я думаю, что ваша проблема заключается в WHITExSpeed / WHITEySpeed.

Вы не вычисляете дельту от положения мыши до белого шара там.

Разве это не должно следовать?

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