我需要我的2D碰撞檢測算法是可伸縮的,但我擔心它不是。我的算法做到這一點:比簡單地檢查每對對象更好的2D碰撞檢測性能
創建精靈對象的鏈表(包括所有的數據)
private LinkedList<Sprite> collisionSpritesList = new LinkedList<Sprite>();
主客場循環,然後將所有精靈的鏈表:
public void GameUpdate() { collisionSpritesList.add(avatar); collisionSpritesList.add(enemy1); collisionSpritesList.add(enemy2); }
然後
collisionCheck()
方法所謂的;它循環遍歷列表中所有對的實體,尋找衝突。然後LinkedList被完全擦除。這是因爲實體需要更新其新位置。
公共布爾checkCollision(){
for(int i = 0; i < collisionSpritesList.size(); i++)
{
for(int j = 0; j < collisionSpritesList.size(); j++)
{
if(i != j)
{
if(collisionSpritesList.get(i).getRectangle().intersects(collisionSpritesList.get(j).getRectangle()))
{
Point p = gridMap.getRandomWalkableLocation();
collisionSpritesList.get(j).setLocation(p.x * gridMap.getCellSize(), p.y * gridMap.getCellSize());
collisionSpritesList.clear();
return true;
}
}
}}
collisionSpritesList.clear();
return false;
}
我的問題是如何有效的檢查碰撞的這種方式?應該以不同的方式完成嗎?如果是的話,那裏有哪些可擴展的方法?