相互引用我有一个二维数组,例如,这样的:去除一个二维数组
[
[0, 1], // collisionGroup0's references
[0, 1, 2], // collisionGroup1's references
[0, 1], // collisionGroup2's references
];
这个数组定义了我的游戏引擎的碰撞地图。所以想象我有3个碰撞组。从这个数组中,我可以看出:
collisionGroup0与collisionGroup0和collisionGroup1发生冲突。
collisionGroup1与collisionGroup0,collisionGroup1和collisionGroup2发生碰撞。
collisionGroup2碰撞collisionGroup0和collisionGroup1。
我希望这是有道理的。
好了,这样的问题:
我在寻找通过的方式来循环并删除倒数引用。由于collisionGroup0与collisionGroup1碰撞并且collisionGroup1与collisionGroup0碰撞,因此我们只需要一个引用。否则,当我进行实际的碰撞检查时,(我的引擎中发生了什么)碰撞会加倍。
我想最终的阵列,处理后,看起来像这样:
[
[0, 1], // collisionGroup0's references
[2], // collisionGroup1's references
[0, 1], // collisionGroup2's references
];
我现在看起来是这样的:
for (var row : int = 0; row < array.length; ++row)
{
for (var column : int = 0; column < array[row].length; ++column)
{
for (var row2 : int = row + 1; row2 < array.length; ++row2)
{
for (var column2 : int = array[row2].length - 1; column2 >= 0; --column2)
{
if (array[row][column] == array[row2][column2])
array[row2].splice(column2, 1);
}
}
}
}
但是,这给我留下了这一点:
[
[0, 1], // collisionGroup0's references
[2], // collisionGroup1's references
[], // collisionGroup2's references
];
因为它没有考虑到collisionGroup2与collisionGroup0不相交的事实。
任何想法我失踪?
谢谢!