2015-02-10 106 views
0

我目前正在製作2D遊戲,而且我正在製作陰影。我有一個緩衝的圖像背景,只是一個黑色的矩形放在屏幕上,一個透明的三角形緩衝圖像,將用於玩家觀看距離。我想要做的是在我的遊戲中繪製黑色背景緩衝圖像,然後在玩家所在的位置繪製透明三角形,並且黑色背景不會顯示在此透明三角形內。通過圖像的透明度

這可能給你什麼,我想要做更深入的瞭解: Image of what I want

這裏是我的影子類:

private BufferedImage diamond; 
private BufferedImage background; 

public Shaders(World world) { 
    try { 
     diamond = ImageIO.read(getClass().getResourceAsStream("/GUI/DIAMOND.png")); 
     background = ImageIO.read(getClass().getResourceAsStream("/GUI/BACKGROUND.png")); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 

    this.world = world; 
} 

public void draw(Graphics g2) { 
} 
+0

可能的重複[如何創建循環bufferedimage,而不是在Java中使用圖形創建一個矩形的一個](http://stackoverflow.com/questions/23669333/how-to-create-a-circular- bufferedimage-rather-creating-a-rectangular-one-in) – haraldK 2015-02-10 09:29:00

+0

看起來像你的圖像是**不**透明!?也許你必須先使它透明... – 2015-02-10 09:54:12

+0

如果你想知道如何使某種顏色透明,然後看看http://stackoverflow.com/questions/3101446/how-to-convert-an-image-into -a-透明圖像中的Java – 2015-02-10 09:57:23

回答

0

如果我理解正確的話您的問題,您要的視覺效果創建就是用除了「三角形」(實際上是一個旋轉的方塊)之外的黑屏覆蓋遊戲場景,通過該「三角形」可以看到部分遊戲場景。

我有一對夫婦的建議(其中第二個是我的建議):

  1. 用透明孔創建您的背景圖片。縮放整個圖形,使洞的大小符合要求,然後將其繪製在場景中。背景圖形必須足夠大,以至於即使在孔的最小尺寸下,它也會延伸到場景的邊界。

  2. 而不是使用圖形圖像進行黑屏,只需繪製包含該孔的填充多邊形。你可以使用GeneralPath來定義一個複雜的多邊形,或者(我的偏好)將你的黑屏分成兩部分(水平方向)並分別繪製每一部分。