Ich versuche gerade eine Art Asteroidspiel in Java zu realisieren.
Für meine Raketen die als BufferedImage vorliegen wird einmalig ein Rotationswinkel festgelegt, der sich durch den Abschusswinkel ergibt.
Ich benutze die Kollisionserkennung aus dem Spieletutorial des Users Quaxli.
Dort wird (wohl die gebräuchliste Form) aus den beiden sich überlappenden rechtecken, der jeweiligen Spriteobjekten (dass sie von der Klasse Rectangle2d.double erben) ein entsprechendes rechteck erzeugt. Mit dem Maßen des Rechtecks werden dann aus den Bildern Subimages erzeugt,über die sich eine Kollisionserkennung erkannt werden kann, wenn an gleicher Position nichttransparente Pixel erkannt werden.
Um diese SubImages zu erzeugen wird das Bild übergeben.
Das kann bei einem rotierten Bild nicht klappen, weil es eben nicht im rotierten Zustand vorliegt.
Nun habe ich kleine Methode in die Spriteobjekte implementiert, die das rotierte Bild zurück geben soll.
Aber es klappt nicht so recht. Ich erhalte immer noch die Fehlermeldung, dass außerhalb des Bildrasters ausgelesen werden soll.
Kurz die kleine Funktion, die das Bild im rotierten Zustand zurückgeben soll.
pic und affineTransform sind Objektvariablen. (pic ist das Originalbild).
Das müßte doch eigentlich funktionieren, oder?
Für meine Raketen die als BufferedImage vorliegen wird einmalig ein Rotationswinkel festgelegt, der sich durch den Abschusswinkel ergibt.
Ich benutze die Kollisionserkennung aus dem Spieletutorial des Users Quaxli.
Dort wird (wohl die gebräuchliste Form) aus den beiden sich überlappenden rechtecken, der jeweiligen Spriteobjekten (dass sie von der Klasse Rectangle2d.double erben) ein entsprechendes rechteck erzeugt. Mit dem Maßen des Rechtecks werden dann aus den Bildern Subimages erzeugt,über die sich eine Kollisionserkennung erkannt werden kann, wenn an gleicher Position nichttransparente Pixel erkannt werden.
Um diese SubImages zu erzeugen wird das Bild übergeben.
Das kann bei einem rotierten Bild nicht klappen, weil es eben nicht im rotierten Zustand vorliegt.
Nun habe ich kleine Methode in die Spriteobjekte implementiert, die das rotierte Bild zurück geben soll.
Aber es klappt nicht so recht. Ich erhalte immer noch die Fehlermeldung, dass außerhalb des Bildrasters ausgelesen werden soll.
Kurz die kleine Funktion, die das Bild im rotierten Zustand zurückgeben soll.
pic und affineTransform sind Objektvariablen. (pic ist das Originalbild).
Java:
public BufferedImage rotatedImage() {
BufferedImage rotatedImage = new BufferedImage((int)this.pic.getWidth(),(int) this.pic
.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g = (Graphics2D) rotatedImage.getGraphics();
g.setTransform(this.affineTransform);
g.drawImage(pic, 0, 0, null);
return rotatedImage;
}
Das müßte doch eigentlich funktionieren, oder?