我目前正在制作2D游戏,而我正在制作阴影。我有一个缓冲的图像背景,它只是一个放在屏幕上的黑色矩形,还有一个透明的三角形缓冲图像,用于观看距离的玩家。我想要做的是,在我的游戏中绘制黑色背景缓冲图像,然后在玩家所在的位置绘制透明三角形,并且黑色背景不会显示在此透明三角形内。
这可能会让您更深入地了解我想要做的事情:
这是我的影子课:
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 :(得分:0)
如果我正确理解你的问题,你试图创造的视觉效果是用黑色覆盖你的游戏场景,除了一个“三角形”(实际上是一个旋转的方块),你的游戏场景的一部分是可见。
我有几个建议(其中第二个是我的建议):
使用透明孔创建背景图形。缩放整个图形,使孔尺寸符合您的要求,然后在场景上绘制。背景图形必须足够大,即使在最小尺寸的孔中也能延伸到场景的边界。
不是使用图形图像进行遮光,只需绘制包含孔的填充多边形。您可以使用GeneralPath
来定义一个复杂的多边形或(我的偏好)将你的黑色切成两半(比方说,水平)并分别绘制每一半。