繁体   English   中英

如何在 Java 中旋转方形图像?

[英]How to rotate a square Image in Java ?

我正在 Java 上的 Geometry dash 之类的游戏中工作,我获得了所有的机制,例如,波浪,球,飞碟,船……无论如何,我正在尝试实现正方形在像原始游戏一样跳跃时旋转的效果您尝试使用 affineTransform 执行此操作,但它不像我使用此代码旋转的原始游戏那样工作,但看起来很奇怪

public void rotate(){
tx.rotate(Math.toDegrees(degrees),width/2,width/2);
     op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);

}

这是我现在的游戏截图

这是几何破折号的链接,您可以看到正方形如何在空中旋转(我正在尝试做什么)

有什么想法吗? 请帮帮我:c

嗯,我实际上会使用 AffineTransform 但以另一种方式......如果你有这两个功能

public void tick()
{

}
public void render(Graphics g)
{

}

我会做这样的事情:

AffineTransform at;
rotation = 0;
public Player()
{
  at = AffineTransform.getTranslateInstance(x, y);
}
public void tick()
{
  at = AffineTransform.getTranslateInstance(x, y);
  if(isInAir)
  {
    rotation++;
    at.rotate(Math.toRadians(rotation), width / 2, height / 2);
  }
  else
  {
    rotation = 0;
  }
}
public void render(Graphics g)
{
  Graphics2D g2d = (Graphics2D) g;
  g2d.drawImage(sprite, at, null);
}

我知道这不是那么实用,总是创建另一个 AffineTransform 但它对我有用。 render方法中执行此操作的另一种方法是不使用任何 AffineTransform:

Graphics2D g2d = (Graphics2D) g;
g2d.rotate(Math.toRadians(rotation));
g.drawImage(sprite, x, y, null);
g2d.rotate(Math.toRadians(-rotation));

我不太确定您是否需要Math.toRadians在这里,但如果不需要就删除它。 希望我能帮上忙!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM