数组中的Java对象 - 冲突检测

时间:2015-09-08 14:33:25

标签: java android collision-detection

假设我有这样的代码:

private void actuallyDrawGraphics(Canvas canvas) {
    canvas.drawColor(Color.WHITE);

    for(Ball ball : balls){

        canvas.drawBitmap(ballBitmap,
                -16 + (ball.x / 100f) * canvas.getWidth(),
                -16 + (ball.y / 100f) * canvas.getHeight(),
                paint
                );
    }
}

每个球都在阵列中注册。我需要进行碰撞(当一个碰撞时与第二个发生碰撞)并且一切顺利,直到我有更多的球,例如10个。检查如下:

球1与2,3,4 ...

球2与1,3,4 ...

有什么办法可以做到这一点吗?

2 个答案:

答案 0 :(得分:0)

{{1}}

就像Nacho说的那样,我相信这将是检查每次可能碰撞的更好方法,但是如果你有非常多的球,那么你可能需要做一些事情来减少你正在进行的检查次数这里。或者,您可能需要改进检查冲突的代码。

答案 1 :(得分:0)

您需要其他数据结构。例如,包含Collision或类似内容的对象List<Ball> ballsThatCollide;。或者每个Ball都有List<Ball> inCollisionWith。如果你想要简单的数组,那么你需要一个N维数组,其中维度是球,交集是碰撞。