# Kollisionserkennung funktioniert nicht



## Revenant (7. Okt 2006)

Hi,

bin auch gerade dabei mein erstes Space Invader Spiel zu programmieren, nur leider häng ich an der Kollisionserkennung.. also ich will das über diese Rectangles prüfen, nur irgendwie funktioniert das ganze nicht, d.h. der Schuss fliegt einfach durch den Feind durch, ohne dass irgend etwas passiert. In seltenen Fällen klappt es, aber naja...



```
// Collisions
		// check for every shot
		for (int i = 0; i < shots.length; i++)
		{
			if (shots[i] != null)
			{
				// if there is collision with enemy
				for (int j = 0; j < enemys.length; j++)
				{
					if (enemys[i] != null)
					{
						// getRectangle returns object of class java.awt.Rectangle
						if (shots[i].getRectangle().intersects(enemys[i].getRectangle()))
						{
							shots[i].collision();
							enemys[i].collision();
							for (int k = 0; k < 20; k++)
							{
								if (explosions[k] == null)
								{
									explosions[k] = new Explosion(enemys[i].getXCoordinate(),
																	enemys[i].getYCoordinate(),
																	panel,
																	explosionImage);
									explosionSound.play();
								}
							}
						}
					}
				}
			}
		}
```

jemand ne Idee?

die getRectangle Methoden sehen so aus:


```
// class shot
public Rectangle getRectangle()
	{
		return new Rectangle(xCoordinate,yCoordinate,4,8);
	}
```

die Kollisionsabfrage steht übrigens in der Drawmethode meiner Spiellogikklasse. Diese Methode wird bei jedem neuzeichnen des Panels aufgerufen. Exceptions kommen keine. Und grad eben is mir noch aufgefallen, dass der Sound wenn überhaupt nur 1 mal abgespielt wird. Das mit dem Zeichnen der Explosion geht auch nicht, der Gegner verschwindet einfach und das wars, aber ich denk mal das is ein anderes Problem ~~ oje


----------



## André Uhres (7. Okt 2006)

Wenn's manchmal klappt, dann hängt das ja wohl von dem Inhalt und der Dynamik der Arrays ab. Darüber sagt der von dir gepostete Code aber nichts aus...

EDIT: Upps, Marco84 hat Recht, hab's übersehen


----------



## Marco84 (7. Okt 2006)

Hi,

du lässt die shots-schleife mit i durchlaufen und die enemy-schleife mit j. du solltest deshalb auch die enemys an der stelle j nehmen, du hast aber überall enemys_ stehn._


----------



## Revenant (7. Okt 2006)

OMG so ein verdammt peinlicher fehler... ~~ und daran sitz ich echt ne ewigkeit 

aber ich au nix mehr ausser verschwommenen ziffern ...

sollte für heute mal pause machen

sorry für den post ^^


----------

