3
我有两个图像,一个是僵尸,另一个是僵尸将有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);
这将产生以下结果:
正如你所看到的,刀片被定位在较高的ÿ (如果你计算0作为屏幕的顶部,就会降低y),因为僵尸会旋转,所以它总是面对玩家,我不能只是改变数字47,因为那时刀片不会正常旋转。
那么我将如何使刀片总是被正确定位,这样无论僵尸面对什么角度,它总会产生以下结果?
僵尸旋转任何程度? – Will
你可以发布多一点的代码? – Will
什么是数字“47”?即使它通常是常量,通常使用变量来使其更易于阅读和更改 –