我有一組內,在世界級的,名爲可碰撞的對象:搜索完全相同的對象的不同實例,一組
Set<Collidable> collidables = new HashSet<Collidable>();
雖然試圖開發一種碰撞檢測系統(用於一個球),我做了兩個for循環,X和Y.
cboxX = (int) Math.floor(position.x - RADIUS);
cboxY = (int) Math.floor(position.y - RADIUS);
cboxW = Math.abs((int) Math.ceil(nextPosition.x + RADIUS) - (int) Math.floor(position.x - RADIUS));
cboxH = Math.abs((int) Math.ceil(nextPosition.y + RADIUS) - (int) Math.floor(position.y - RADIUS));
for (int x = cboxX; x <= cboxW + cboxX - 1; x++)
{
for (int y = cboxY; y <= cboxH + cboxY; y++)
{
}
}
一切都很好。然而,在for循環中,我試圖用x和y參數來檢查collidables,但是由於我正在創建一個collidable的新實例(雖然與之前生成的參數完全相同),但是,它總是會調高假:
world.collidables.add(new Block(new Vector2(x, y)));
System.out.println(world.collidables.contains(new Block(new Vector2(x, y)))); //returns false
但是,如果我用塊相同的情況下,它會變成了真:
Block b = new Block(new Vector2(x, y))
world.collidables.add(b);
System.out.println(world.collidables.contains(b)); //returns true
這是不可接受的。然而,因爲整個原因有兩個for循環就是不必遍歷每一個可碰撞的每一次更新。
我問的是,有沒有人知道一種方法來獲取collidable是否在我指定的位置,而不必遍歷整個集合?
同樣,這將需要迭代,這是我不能做的性能原因。如果可以的話,我會迭代並檢查該對象的向量是否與我所在的位置具有相同的值。 – LulzCop