gpt4 book ai didi

java - 在Java游戏中旋转 Sprite ,而不旋转整个屏幕

转载 作者:行者123 更新时间:2023-12-01 13:40:17 24 4
gpt4 key购买 nike

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

我尝试这样做:

(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() 方法仅旋转游戏中的特定 Sprite ?如果没有:有人告诉我可以使用 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);

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

关于java - 在Java游戏中旋转 Sprite ,而不旋转整个屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20871013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com