假设我有这样的代码:
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...
有什么办法可以做到这一点吗?
最佳答案
for (int i = 0; i < balls.size(); i++) {
Ball ball = balls[i];
for (int a = i + 1; a < balls.size(); a++) {
Ball ball2 = balls[a];
// check for collision with ball and ball2.
}
}
就像 Nacho 所说的那样,我相信这将是检查每一次可能的碰撞的更好方法,但如果你有大量的球,那么你可能需要做一些事情来减少你在这里进行的检查数量。或者,您可能需要改进检查冲突的代码。
关于数组中的 Java 对象 - 碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32460510/