小编Pat*_*man的帖子

Java游戏2D重叠阴影与Swing

我目前正在使用Swing作为我的主要绘图组件开发2D Java游戏.每个对象都有一个阴影(BufferedImage),但每个阴影都与其他阴影重叠.是否可以只让阴影不相互重叠?因为如果物体在它下面,我仍然希望阴影在玩家上方绘制,而不是如果物体在玩家之上.为清晰起见,这是一张图片:

截图

我看过alpha合成,我想我需要Source Out?我还想过让所有阴影(没有透明度)在一个图层上绘制,然后用透明度绘制它,然后它不会像以前那样在玩家和其他对象上绘制.

我有一个Draw对象,它是一个JPanel并覆盖paintComponent方法.在这个方法中,我绘制当前房间的地板,然后迭代属于当前房间的对象列表,并调用每个对象的绘制方法来绘制所有内容.

对象绘制方法:

public void draw(Graphics g) {
    if (visible && checkInScreen()) {

        // The required drawing location
        int drawLocationX = getX() - globalCameraX;
        int drawLocationY = getY() - globalCameraY;

        if (shadow) {
            g.drawImage(shadowImages.get(imageIndex),
                    drawLocationX + shadowOffset.x + (getImageWidth()/2),
                    drawLocationY + shadowOffset.y, null);
        }
        g.drawImage(images.get(imageIndex), drawLocationX, drawLocationY, null);

        //Collisionbox
        if (SHOW_COLLISION_BOXES){
            g.setColor(Color.WHITE);
            g.drawRect(drawLocationX + getCollBoxX(), drawLocationY + getCollBoxY(), getCollBoxW() - getCollBoxX(), getCollBoxH() - getCollBoxY());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果这个问题已被提出,我很抱歉,但我找不到类似的东西.

java swing java-2d paintcomponent

7
推荐指数
1
解决办法
421
查看次数

标签 统计

java ×1

java-2d ×1

paintcomponent ×1

swing ×1