Kollisionserkennung mit VIELEN Objekten

Ich vor allem auf die Grafik-Aspekte zu schaffen, ein wenig 2DGame. Ich habe beobachtet/angeschaut, mehrere tutorials, aber keiner von Ihnen waren zufriedenstellend. Ich habe bereits ein Spieler(ein Platz) Bewegung und Kollision mit anderen Quadrate auf dem Bildschirm. Gewicht etc. Sind auch erledigt.

Wenn es nur so viel Objekte auf dem Bildschirm zu sehen ist (30*20), funktioniert alles bestens. Aber wenn ich erhöhen auf sagen wir mal 300*300 das Programm beginnt zu laufen sehr langsam, da es ist zu prüfen, für so viele Objekte.

Ich weiß wirklich nicht, wie Spiele wie Minecraft kann ALLE DIESE Blöcke und mein Programm gibt bereits bis auf 300*300 Blöcke.

Ich schon versucht, NUR überprüfen Sie auf Kollisionen, wenn die Objekte sichtbar sind, aber das führt zu das Programm prüfen jedes einzelne Objekt für Sichtbarkeit führt zu dem gleichen problem.
Was mache ich falsch? Hilfe zu schätzen.

Poste ich einige code, wie ich mit den Kollisionen.

player.collision(player, wall);

public void collision(Tile object1, Tile[] object2){
    collisionCheckUp(object1, object2);
    collisionCheckDown(object1, object2);
    collisionCheckLeft(object1, object2);
    collisionCheckRight(object1, object2);  
}

public void collisionCheckDown(Tile object1, Tile[] object2){

    for (int i = 0; i < Map.tileAmount; i++){
        if(object2[i] != null && object2[i].visible)
        {
            if(object1.isCollidingDown(object2[i])){
                object1.collisionDown = true;
                return;
            }

        }
    }       
    object1.collisionDown = false;
}

public void compileHullDown(){

     collisionHull = new Rectangle((int)x+3, (int)y+3, width-6, height);
}

int wallCount = 0;
    for (int x=0;x<Map.WIDTH;x++) {
        for (int y=0;y<Map.HEIGHT;y++) {

            if (Map.data[x][y] == Map.BLOCKED) {
                wall[wallCount] = new Tile(x * Map.TILE_SIZE, y *  Map.TILE_SIZE);
                wallCount++;
            }
        }
    }

InformationsquelleAutor der Frage Gjallar | 2011-11-10

Schreibe einen Kommentar