为了进行代码优化,我想创建一个包含40个相等正方形(10x10px)的二维数组。每个方块代表显示窗口的1 \ 40(400x400px)。
我使用标准的双循环方法填充2d数组。
int col = 40;
int row = 40;
int boxPosition = 0; //Position of the box (coordinates)
Integer[][] boxes = new Integer[40][40];
for (int i = 0; i < col; i++) {
for (int j = 0; j < row; j++) {
boxes[i][j] = boxPosition;
boxPosition += 10; //Creates a 10px box.
}
boxPosition = 0; //Resets box size for next column
}
此计划中有几个圈子。我们有一个船(圆圈)向敌人(圆圈)发射导弹(圆圈)。
我想只在其中一个方格中有子弹+敌人时才进行碰撞检测。这将极大地优化代码。
问题是......如何从二维数组中创建这些方块?如何选择每个方块?如何测试导弹和敌人是否在同一个方格内?
代码示例非常有用。
感谢。
答案 0 :(得分:2)
我不确定你在2D数组中做了什么,或者为什么它包含整数或为什么它在每列中包含增加的大小,但是基于网格的碰撞的一般方法是使用2D数组GameObjects。您的案例中的GameObject可以是Ship,Missile或Enemy。
当你的一个GameObjects想要移动时,你只需检查GameObjects的2D数组,看看你想要移动到的方块中已有的数据。如果它是空的,你可以移动。如果它不是空的,你就会发生碰撞。