相互引用我有一個二維數組,例如,這樣的:去除一個二維數組
[
[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不相交的事實。
任何想法我失蹤?
謝謝!