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」?即使它通常是常量,通常使用變量來使其更易於閱讀和更改 –