[英]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.