【发布时间】:2013-04-22 12:31:38
【问题描述】:
我正在创建一个游戏,并希望敌人在跟随玩家时面对玩家。我曾尝试以这种方式使用 AffineTransform:
at = new AffineTransform();
angle = Math.atan2(player.getY() - y,player.getX() - x) + (Math.PI / 2);
at.setToTranslation(x, y);
at.rotate(angle, width / 2, height / 2);
然后使用g2D.drawImage(image,at,this); 在屏幕上绘制敌人。问题是敌人只是面对屏幕上的一个随机位置,它确实会旋转以面对那个点,但它并没有像我想要的那样面对玩家。我在播放器类中使用完全相同的代码让播放器面对鼠标光标,然后它工作得很好,那为什么它不能面对播放器呢?
【问题讨论】:
-
@AndrewThompson 是正确的。虽然您的问题略有不同(谈论面向玩家的敌人),但与让图像 X 面向位置 Y 的潜在问题相同。
-
@DuncanJones 我专门写了面向鼠标光标的代码不适用于获取玩家 x 和 y 并使敌人图像面向玩家位置。因为这个问题回答了如何让图像面对鼠标光标,所以它不能让敌人面对玩家。
标签: java rotation affinetransform