Hey Leute!
Ich habe vor einer Weile mit Android angefangen und arbeite zur Zeit an ein paar kleinen Apps (Als Übungen).
Nach ein paar weiteren Tests möchte mit einem 2d Rollenspiel für Android starten.
Um bestimmte Animationen zu generieren nehme ich die einzelnen Bestandteile davon, setze sie an die richtigen Koordinaten und drehe sie teilweise. Daraus werden dann Sprites generiert.
Als ich noch nicht mit Android gearbeitet hatte habe ich immer folgende Funktion zum Rotieren von Bildern verwendet:
private BufferedImage rotateImage(BufferedImage src, double degrees, int x, int y){
AffineTransform affineTransform = AffineTransform.getRotateInstance(Math.toRadians(degrees), x, y);
//Vergrösserung des Bildes damit jeder gedrehte Pixel auf das Bild passt
BufferedImage rotatedImage = new BufferedImage(
src.getWidth() + (int)(src.getWidth() * 1.2D),
src.getHeight() + (int)(src.getHeight() * 1.2D),
src.getType());
Graphics2D g = (Graphics2D)rotatedImage.getGraphics();
g.setTransform(affineTransform);
g.drawImage(src, 0, 0, null);
return rotatedImage;
}
Die Funktion dreht das Bild um den Punkt XY um B Grad.
Damit kann ich zum Beispiel eine schöne Armbewegung generieren, wenn ich den Arm einfach immer um den selben Punkt an der Schulter drehe.
Leider wird die Klasse BufferedImage von Android nicht mehr unterstützt
Also habe ich versucht mit Bitmaps zu arbeiten:
private Bitmap rotateImage(Bitmap src, float degrees, int x, int y, double expansion){
if(degrees==0){
return src;
}
if ((x == 0) && (y == 0)) {
x = src.getWidth() / 2;
y = src.getHeight() / 2;
}
Matrix m = new Matrix();
m.postRotate(degrees, x, y);
Bitmap rotatedBitmap = Bitmap.createBitmap(src , 0, 0, (int)(src.getWidth()), (int)(src.getHeight()), m, true);
return rotatedBitmap;
}
Aber irgendwie wird das Bild nicht um den ausgewählten Punkt gedreht?
Ich versuche jetzt schon seit ein paar Tagen die Animationen in den Griff zu kriegen, aber irgendwie dreht sich der Arm immer falsch.
Ich habe auch schon versucht zuerst das Bild um das Zentrum zu drehen, und dann um XY zu verschieben aber das hat auch nicht geklappt.
Der Animationen-Generator ist für das Spiel lebensnotwendig (Spieler können zum Teil ihre eigenen Charaktere erstellen) deshalb komme ich auch nicht drumherum…
Habt ihr vielleicht irgendwelchen Ideen wie man das Problem lösen könnte?
Ich wäre wirklich sehr froh über ein paar Antworten…