已解决:
我正在制作一个平铺的2D游戏并遇到问题。我的游戏允许用户使用任意形状的刷子类型创建那里的地图,该刷子类型被缓存为所使用的每种类型的油漆的区域。一旦我有了给定油漆的缓存区域,我将区域分成平铺的Path2D形状,从整个地图上每100到100个瓷砖的交叉点分开。问题在于,当我在视图区域内使用AffineTransform并将其设置为剪辑进行绘画时,显然形状与原来的形状相同。
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);
}
}
当有移动时,结果会产生实际形状的平铺截止版本......
输出:
初始视图 向右移动后查看&amp;向下
解决方案
修改专栏
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);