Problem bei Kollision zwischen Array-objekten!

Supersiggi

Neues Mitglied
Guten Abend!

Ich bin dabei ein kleines Side-scroller Spiel am programmieren (R-type ähnlich)
und habe nun einmal die Kugeln/Schüsse, als eigene Klasse und Array, damit ich mehrere erstellen kann sowie, das gleich mit den Gegnern! Hat jemand eine Idee wie ich hier eine Kollisionsabfrage programmieren kann? Diese muss natürlich Y und X Koordinaten abfragen, sowie den Start punkt wo die Bilder,der Objekte gezeichnet werden (meinetwegen 0/0) und dann die Pixel die das Bild breit und lang ist mit einberechnen...!!!

Hier mal der Code wenn ihr mehr braucht sagt es, denn ich weiß nicht was ihr alles braucht!
Java:
//bullet
			for(int i=0; i<bulletx.length; i++)
			{

				if(bulletx[i] != null)
					{

						bulletx[i].move();

						if(bulletx[i].positiony() < 0)
						{

							bulletx[i] = null;

						}

					}

				}
			
			//enemy
			for(int i=0; i<enemyx.length;i++){
			
				if(enemyx[i] == null){
					enemyx[i]=playerx.generateEnemy(0);
					break;
				}

				if(enemyx[i] != null){
					
					enemyx[i].move();
					
					if(enemyx[i].getY()>appletsize_y){
						
						enemyx[i] = null;
					}
				}
			}
			
			
			repaint();
        	
            try
            { 
                Thread.sleep (5);

            }
            catch (InterruptedException ex)
            { 
                // do nothing

            }    
            Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
            }
        }

Java:
 public void keyTyped(KeyEvent arg0) {
    	for(int i=0; i<bulletx.length; i++)
		{


			if(bulletx[i] == null)
			{

				bulletx[i] = playerx.shot(x_pos,y_pos);

				break;

			}

		}
	}
 
Nja das is ganz einfach. Mach dir eine Helper-Klasse oder eine Methode. Dort drinnen machst du dir eine Abfrage auf Kollision.

Du verwaltest enemies und bullets in Arrays/Listen (wobei ich Listen bevorzugen würde), dann kannst du für jeden Tick deines Spieles eine Abfrage in der Logik machen die in etwa so aussieht:

Java:
/* Annahmen */
List<Enemy> enemies = ...;
List<Bullet> bullets = ...;

for(Enemy e : enemies) {
    for(Bullet b : bullets) {
        if(Helper.hasCollision(e, b)) {
            hit(e, b);
        }
    }
}
 

Neue Themen


Zurück
Oben