使用.intersection的矩形和圆形碰撞Java

时间:2016-10-27 02:07:20

标签: java collision detection bounce breakout

我正在为学校项目制作突破性的游戏。我遇到的唯一问题是当球和砖碰撞时球弹跳。我使用ball1.getEllipse()。intersects(b.getRectangle())让我弄清楚它何时碰撞并删除砖块。弹跳的机会取决于它碰撞的一面。这是主要问题。 .intersect这件作品并没有告诉我砖被哪一面击中。我需要知道是否要改变x或y速度。如果有人对如何解决这个问题有任何想法,请留下您的意见(我一直试图想出一个解决方案5个小时,我放弃了)

 public void collision(int i) {

    for (Block b : blocks) {
        if (ball1.getEllipse().intersects(b.getRectangle())) {
            if (!b.isDestroyed()) {
                b.destroy();
                blockCount-=1;
                ball1.brickBounce();`public void collision(int i) {

1 个答案:

答案 0 :(得分:1)

根据我对你的问题的理解,你想知道球击中矩形的哪一边。这样做的一个简单方法是取球的位置和矩形的位置并比较两者。如果球的x位置小于矩形x位置 - 宽度的一半(以获得边界的x位置),则球击中左侧。然后你可以在右边做相反的事情。检查它是否位于顶部或底部与y位置和矩形的高度相似。请注意,我假设每个形状的x和y位置都是中心,如果不仅需要进行微小的调整以获得与它是中心相同的结果。