Boa tarde pessoal, estou criando um jogo para a faculdade, e estou com dificuldade para rotacionar uma imagem… Já procurei na internet, encontrei inúmeros métodos, mas não consigo fazer nenhum se adequar a maneira a qual estou trabalhando.
Então é o seguinte, tenho um tanque e um cano, a intenção é com a variação do angulo, eu rotacionar o cano no eixo (0,3) sendo que o cano é (68,6), de modo a parte traseira ficar fixa, como se fosse uma eixo, ou braço… e depois fundir a imagem do tanque e jogar na tela.
a fusão eu já fiz, agora a rotação em um eixo que não é centralizado retornando uma imagem na qual seja possível unir as mesmas estou com dificuldades, há como alguém me ajudar dando dicas, links ou soluções?
private String tanquePath = "/images/tanque_normal.png";
private String canoPath = "/images/cano_normal.png";
private int x;
private int y;
private Image tanqueIMG;
private int angulo;
public Tanque() {
ImageIcon corpo = new ImageIcon(this.getClass().getResource(tanquePath));
ImageIcon cano = new ImageIcon(this.getClass().getResource(canoPath));
tanqueIMG = juntaCorpoCano(corpo.getImage(), cano.getImage());
// imagem do tamanho em que o tanque + cano podem girar livremente
// fazendo -20 a a 90 graus
width = 85;
height = 85;
visible = true;
x = 100;
y = 350;
tiros = new ArrayList();
}
public Image rotacionaCano(Image cano, int angulo) {
BufferedImage novaImagem = new BufferedImage(85, 85, BufferedImage.TRANSLUCENT);
Graphics g = novaImagem.getGraphics();
g.drawImage(cano, 25, 59, null);
// agora rotacionar imagem em sei la onde
return novaImagem;
}
public Image juntaCorpoCano(Image corpo, Image cano) {
BufferedImage novaImagem = new BufferedImage(85, 85, BufferedImage.TRANSLUCENT);
Graphics g = novaImagem.getGraphics();
g.drawImage(rotacionaCano(cano, 0), 0, 0, null);
g.drawImage(corpo, 0, 56, null);
return novaImagem;
}