将图像定位在旋转图像内

时间:2013-06-01 13:14:00

标签: java image rotation

我有两个图像,一个用于僵尸,另一个用于刀片,僵尸将有10%的机会产生。我想定位刀片,使它与僵尸右手重叠。如果僵尸与宽度相同,我可以做到这一点,但因为它是62x55,所以它使一切变得更加复杂。现在定位刀片和僵尸的代码如下所示:

at = new AffineTransform();
angle = Math.atan2(player.getY() - zombie.getY(), player.getX() - zombie.getX()) + (Math.PI / 2);
at.setToTranslation(zombie.getX(), zombie.getY());
at.rotate(angle, zombie.getWidth() / 2, zombie.getHeight() / 2);
g2d.drawImage(zombie.getBrImage(),at,this);
ImageIcon ii = new ImageIcon("Blade.png");
Image image = ii.getImage();
int x = (int) Math.round(zombie.getX() + 47 * Math.sqrt(2) * Math.cos(angle - Math.PI / 4));
int y = (int) Math.round(zombie.getY() + 47 * Math.sqrt(2) * Math.sin(angle - Math.PI / 4));
at.setToTranslation(x, y);
at.rotate(angle, zombie.getWidth() / 2, zombie.getHeight() / 2);
g2d.drawImage(image, at, this);

这将产生以下结果:

currentbladepos

正如你所看到的那样,刀片位于一个更高的y(如果你将0作为屏幕顶部,则y更低),因为僵尸会旋转,所以它总是面向玩家,我不能只是更改y的数字47,因为刀片不能正确旋转。

那么我如何才能使刀片始终正确定位,以便无论僵尸面对什么角度,它都会产生以下结果?

bladepos

1 个答案:

答案 0 :(得分:0)

你可以有两张图片:

  • 没有刀片的人(Img1
  • 带刀片的人(Img2):拿起僵尸和刀片,并在开头合成它,例如:在构造函数中。

然后你可以说:

if (randomValue < 0.10) { zombieImg = Img1 } else { zombieImg = Img2}

然后只需翻译/旋转/等。初始化后ZombieImg

你怎么看? : - )