无法检测到与多边形的碰撞

Can't detect collision with Polygon

一些背景-它是小行星游戏

我试图检测圆和多边形对象之间的碰撞,所以我使用 Polygon.contains() 和圆的坐标。 但由于某些未知原因,有时它实际上检测到碰撞: 当第一颗流星(多边形)出现时,我会尝试射击它(子弹是圆圈)并且它 可能 检测到它但不确定第二颗是否相同,依此类推-换句话说,检测并不总是有效。

代码:

 public void run() {
        super.run();
        while (true){
            decreaseArr(this.shapes[0].xpoints,1);
                if (!Bullet.bulletList.isEmpty()){
                    for (int i = 0; i< Bullet.bulletList.size() ; i++){
                            Bullet currentBullet= Bullet.bulletList.get(i);
                            if (this.shapes[0].contains(currentBullet.x, currentBullet.y)){
                                System.out.println(meteorList.indexOf(this));
                                System.out.println("HIT!");
                                Bullet.bulletList.remove(currentBullet); //Delete bullet from screen
                                meteorList.remove(this); //Delete from screen
                                breakFlag=true;
                                System.out.println(Meteor.meteorList);
                            }
                    }
                    if (breakFlag)
                        break;
                }
            try {
                TimeUnit.MILLISECONDS.sleep(meteorVelocity);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

(这是 Meteor class 中的 运行 方法,所以每个流星都有一个形状数组(现在它只有一个形状,但稍后我会添加更多))

编辑: Some video footage(抱歉没早点编辑,刚回家:))

编辑 2:

重要说明: 每次我 运行 游戏机会是我 不会 能够摧毁与上次相同的流星 - 每次我得到不同的结果

对多边形进行任何更改后必须调用 invalidate()