2015-02-10 110 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来定义一个复杂的多边形,或者(我的偏好)将你的黑屏分成两部分(水平方向)并分别绘制每一部分。