2017-05-21 2 views
0

Ich habe ein Projekt in Android Studio für libGDX. Ich habe dieses Kollisionssystem in meiner Spielerklasse benutzt und es hat funktioniert! Aber wenn ich meine Bullet-Klasse einchecke, funktioniert es nicht und gibt mir einen Fehler!libGDX Kollision funktioniert nicht richtig in meiner Update-Methode

('em' ist ein btw EntityManager) (em.entities ein Array ist, die Libgdx Version eines Arraylist ist)

for (Entity e : em.entities) { 
    if (e instanceof Enemy) { 
     if (getBounds().contains(e.getBounds())) { 
      System.out.println("Collided!"); 
     } 
    } 
} 

Dies ist der Fehler:

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: #iterator() cannot be used nested. at com.badlogic.gdx.utils.Array$ArrayIterator.hasNext(Array.java:550) at com.thechief.game.entities.EntityManager.update(EntityManager.java:35) at com.thechief.game.screen.GameScreen.update(GameScreen.java:29) at com.thechief.game.Main.render(Main.java:50) at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225) at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)

Antwort

0

Don verwende den Iterator nicht, da dies für verschachtelte Schleifen nicht erlaubt ist. Verwenden Sie einfach eine traditionelle for-Schleife anstelle eines Iterators.

for(int i=0;i<em.entities.size;i++){ 
    Entity e=em.engities.get(i); 
    if (e instanceof Enemy) { 
     if (getBounds().contains(e.getBounds())) { 
       System.out.println("Collided!"); 
     } 
    } 
} 
Verwandte Themen