繁体   English   中英

在Java游戏中旋转精灵,而无需旋转整个屏幕

[英]Rotate a sprite in a Java game, without rotating the entire screen

如何在Java 2D游戏中旋转精灵,而不旋转整个屏幕? 我只想旋转精灵。

我尝试这样做:

(g2d是Graphics2D对象);

g2d.rotate(Math.toRadians(30), 50, 50);
g2d.drawImage(image1, 50, 50, this);

g2d.rotate(Math.toRadians(50), 100, 100);
g2d.drawImage(image2, 100, 100, this);

但是,每次旋转都会影响整个屏幕,而不是先将image1旋转30度,然后再将image2旋转50度。

有没有一种方法可以使用g2d.rotate()方法旋转游戏中的特定精灵? 如果不是这样:有人告诉我可以使用AffineTransform对象,但是找不到在线教程,该教程实际上从一开始就说明了如何使用这个令人困惑的对象。 您能否给我一个链接或向我解释如何使用AffineTransform对象做到这一点?

我想要最普通的2D游戏中执行此操作的“标准”方法。

每当您对其进行更改时,都需要重置图形,因为它将用于渲染子级以及可能的其他组件。 有两种方法可以做到这一点。 最好的方法通常是使用Graphics.create()进行复制。 但是,根据您的情况,撤消单个更改可能会更容易:

g2d.rotate(Math.toRadians(-30), 50, 50);
g2d.drawImage(image1, 50, 50, this);
g2d.rotate(Math.toRadians(30), 50, 50);

g2d.rotate(Math.toRadians(50), 100, 100);
g2d.drawImage(image2, 100, 100, this);
g2d.rotate(Math.toRadians(-50), 50, 50);

注意,调用rotate等实际上是将AffineTransform应用于当前的图形配置。

暂无
暂无

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

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