在java中,如何处理圆和半圆碰撞的反应?

在java中,如何处理圆和半圆碰撞的反应?,java,Java,我有一个圆圈(不是玩家控制的)和一个半圆(玩家控制的)不正确地碰撞。检测方法工作正常,并在发生碰撞时返回布尔值。然而,反应不能正常进行。我注意到的最大问题是,当半圆不移动时,该圆直接穿过半圆而不改变速度。圆和半圆都有称为speedX和speedY的整数。作为参考,班上的球是圆,班上的球员是半圆。 我的代码如下: if(contact==true) runBounce(); public void runBounce() { int speedX=ball.getSpeedX()+

我有一个圆圈(不是玩家控制的)和一个半圆(玩家控制的)不正确地碰撞。检测方法工作正常,并在发生碰撞时返回布尔值。然而,反应不能正常进行。我注意到的最大问题是,当半圆不移动时,该圆直接穿过半圆而不改变速度。圆和半圆都有称为speedX和speedY的整数。作为参考,班上的球是圆,班上的球员是半圆。 我的代码如下:

if(contact==true)
   runBounce();

public void runBounce()
{
    int speedX=ball.getSpeedX()+(player.getSpeedX()/2);
    int speedY=ball.getSpeedY()+(player.getSpeedY()/2);
    if (player.getSpeedX()==0 && player.getSpeedY()==0) 
    {
        bounceOff();
    }
    else
    {
        ball.setSpeedX(speedX);
        ball.setSpeedY(speedY);
    }
}

public void bounceOff()
{
   ball.setSpeedX(ball.getSpeedX()*-1);
   ball.setSpeedY(ball.getSpeedX()*-1);
}

为什么我的代码不起作用,我能做些什么来修复它呢?

你的最后一行是你的问题……你在输入错误时使用了Y上的X反转。

可能是速度已经超过了对象的大小?这会导致他们互相“跳过”吗?你能举个例子说明当你遇到问题时,半圆的“x和y”速度是多少,圆的“x和y”速度是多少,以及你期望发生的事情是什么而没有发生吗?最后一行:ball.setSpeedY(ball.getSpeedX()*-1);。。。。第二个应该是Y而不是X