带有 slick2d 图形转换的图像怪异
Image weirdness with slick2d graphics translation
我正在制作游戏,我注意到每当我使用 graphics.translate 函数时,在翻译之后图像就会发生这种情况。
翻译前
翻译后
我想知道是否有办法解决这个问题,或者其他人有同样的问题。所有这些精灵都是从 spritesheet
编辑:翻译代码
public void translate(Graphics g, GameContainer container, int delta) {
g.translate(((container.getWidth() / 2) - this.x), ((container.getHeight() / 2) - this.y));
}
public void update(GameContainer container, int type){
if (type == 0) {
x = p.getX(); //p is the player
y = p.getY();
} else if (type == 1) {
x = player.x;
y = player.y;
}
if (offset) {
if (this.x - container.getWidth() / 2 < offsetMin[0]) {
x = offsetMin[0] + container.getWidth() / 2;
} else if (this.x + container.getWidth() / 2 > offsetMax[0]) {
x = offsetMax[0] - container.getWidth() / 2;
}
if (this.y - container.getHeight() / 2 < offsetMin[1]) {
y = offsetMin[1] + container.getHeight() / 2;
} else if (this.y + container.getHeight() > offsetMax[1]) {
y = offsetMax[1] - container.getHeight() / 2;
}
}
}
尝试将 g.translate() 的 x 和 y 参数转换为整数。这将消除任何舍入错误,其中瓦片不会以完美的像素坐标结束(IE 4,而不是 4.2)。
将评论中的答案移至答案,以便将其标记为已被 OP 接受
我正在制作游戏,我注意到每当我使用 graphics.translate 函数时,在翻译之后图像就会发生这种情况。
翻译前
翻译后
我想知道是否有办法解决这个问题,或者其他人有同样的问题。所有这些精灵都是从 spritesheet
编辑:翻译代码
public void translate(Graphics g, GameContainer container, int delta) {
g.translate(((container.getWidth() / 2) - this.x), ((container.getHeight() / 2) - this.y));
}
public void update(GameContainer container, int type){
if (type == 0) {
x = p.getX(); //p is the player
y = p.getY();
} else if (type == 1) {
x = player.x;
y = player.y;
}
if (offset) {
if (this.x - container.getWidth() / 2 < offsetMin[0]) {
x = offsetMin[0] + container.getWidth() / 2;
} else if (this.x + container.getWidth() / 2 > offsetMax[0]) {
x = offsetMax[0] - container.getWidth() / 2;
}
if (this.y - container.getHeight() / 2 < offsetMin[1]) {
y = offsetMin[1] + container.getHeight() / 2;
} else if (this.y + container.getHeight() > offsetMax[1]) {
y = offsetMax[1] - container.getHeight() / 2;
}
}
}
尝试将 g.translate() 的 x 和 y 参数转换为整数。这将消除任何舍入错误,其中瓦片不会以完美的像素坐标结束(IE 4,而不是 4.2)。
将评论中的答案移至答案,以便将其标记为已被 OP 接受