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