0

解决了 :

我正在制作平铺的 2d 游戏,但遇到了问题。我的游戏允许用户使用任意形状的画笔类型创建地图,该画笔类型缓存为所使用的每种油漆类型的区域。一旦我获得了给定油漆的缓存区域,我将这些区域从整个地图上每个 100 x 100 平铺的交点中分成平铺的 Path2D 形状。问题是当我在查看区域内仿射变换瓷砖并将其设置为剪辑以进行绘画时,显然形状与原来的形状被切断了。

            for(int y = 0; y < host_frame.getHeight(); y+=100){

                for(int x = 0; x < host_frame.getWidth(); x+=100){

                    host.setClip(AffineTransform.getTranslateInstance(CamX, CamY).createTransformedShape(paint_tiles.get(paint_textures.get(i)).get(new Point(x,y)))); 
                    host.drawImage(paint_textures.get(i).getImage(), x, y, host_frame);

                }

            }

当有运动时,结果会产生实际形状的平铺截止版本......

输出 :

向右和向下移动后的初始视图初始视图 向下和向右移动后查看

解决方案

编辑线

host.drawImage(paint_textures.get(i).getImage(), AffineTransform.getTranslateInstance(CamX, CamY).createTransformedShape(paint_tiles.get(paint_textures.get(i)).get(new Point(x,y))).getBounds().x,AffineTransform.getTranslateInstance(CamX, CamY).createTransformedShape(paint_tiles.get(paint_textures.get(i)).get(new Point(x,y))).getBounds().y, host_frame);
4

0 回答 0