Problem mit PixelGrabber.

Kai008

Erfahrenes Mitglied
Abend. Wollte mal versuchen ein kleines Raumschiffballerspiel zu schreiben. Bin über den PixelGrabber gestoßen und wollte ihm zum erkennen von Kollisionen verwenden. Der Munition habe ich ein relativ dunkles Rot verpasst was ich nirgends sonst verwenden werde um sicher zu stellen das immer nur die Kugeln des Raumschiffes erkannt werden.
Nur leider steht in red, green und blue immer nur 0. Kann mir bitte wer sagen warum?

Code:
public void move()
{
	this.ypos++;
	grabber = new PixelGrabber(this.image, this.ypos + 1, this.xpos, 2, 2, this.pixel, 1, 3);
	this.red   = (this.pixel[0] >> 16) & 0xFF;
        this.green = (this.pixel[0] >> 8) & 0xFF;
        this.blue  = (this.pixel[0]) & 0xFF;
	System.out.println(this.red + " " + this.green + " " + this.blue);
}
 
Ganz auf die Schnelle: der Aufruf von grabPixels() fehlt (siehe API). Das ständige Grabben ist aber vermutlich zu aufwändig für eine Kollisionsabfrage.
 
Ups, ich habe mich schon gefragt warum Eclipse mich nicht aufgefordert hat ein Try zu setzen.
Aber ändert leider nichts. Gibt es vielleicht etwas besseres zur Kollisationserkennung? Soweit ich gesehen habe unterstützen Bilder keine Schnittmengen.
 
Java bietet ja Methoden wie getBounds etc., damit lässt sich z.B. schon eine einfache Kollisionsabfrage bauen. Schau z.B. mal hier.
 
Hallo,

Kollisionsabfrage über Pixelwerte zu machen ist IMHO keine gute Idee...

Normalerweise nimmt man dafür ein Boxing Model (Bounding Boxes) in dem man um seine Objekte künstliche Hüllen (hier Rechtecke) legt und schaut ob diese sich überschneiden. Das ist natürlich etwas ungenau, reicht aber für die meisten Anwendungen aus. Für genauere Methoden schau mal hier:
http://en.wikipedia.org/wiki/Collision_detection

schau mal hier:
http://www.cokeandcode.com/node/6
http://www.tutorials.de/forum/java/251899-angehensweise-fuer-ein-brettspiel-mit-java-2d.html

Gruß Tom
 
Danke.
Ich bin auf der Suche nach getBounds über VirtualScreen gestoßen. Könnte man es damit auch machen, also zuerst mit getBounds die Positionen auslesen und dann intersecten?
 
Zurück