在我的Java(使用Processing)Terraria(基于瓷砖的2D游戏)克隆中,当相机移动时,我在表面块和天空之间遇到了相当重的色斑(我认为这就是您所说的)很快。
我已经尝试将fps限制为60和其他值,但这完全没有帮助。我还尝试删除所有代码,除了绘制块和天空,仅以恒定的速率向下移动相机,但问题仍然存在。我也尝试过只在屏幕上绘制一些距离相机不到10个块的块,但这并没有帮助。我尝试将背景色从天蓝色变为淡红色,并观察到出血的颜色发生了变化,但是强度保持不变。我还试图将显示器的刷新率限制为60HZ,以防万一显示器出现问题(但正如您所看到的,我录制了问题的视频)。
编辑:当我以四分之一的速度播放视频时,几乎看不到它,因此可能是我的显示器产生的效果。即使那样,我也想知道如何处理这个问题,因为当全速运行游戏时,它非常引人注目。我玩其他游戏时没有注意到这种效果。
/*
The following contains a bit of pseudo code as to not get cluttered up with
Camera movement and choosing which blocks to be rendered, but otherwise
it is the same as my implementation
*/
static PImage dirtImg;
//Right above surface
float camY = SURFACE_HEIGHT + TERRAIN_HEIGHT + 10;
float t0 = 0.0, t1 = 0.0;
float dt = 1.0 / 60.0;
//I am running this once during the setup.
void loadImg() {
dirtImg = loadImage("data/images/textures/0.png", "png");
}
void drawBlocks() {
//for each block on screen with pos (x,y)
image(dirtImg,x,y);
}
void draw() {
adjustTiming();
background(127,218,255);
drawBlocks();
camY -= 10 * dt;
}
void adjustTiming() {
if (frameCount == 1) {
t0 = System.nanoTime();
}
else {
t0 = t1;
t1 = System.nanoTime();
dt = (t1 - t0) / 1E9;
}
}
对不起,我的代码格式很抱歉,这是我关于SO的第一篇文章...
我希望这些块看起来像它们的图像,而它们上方的天空看起来像我为其设置的颜色,但是随着相机的向下移动,会有很多颜色渗出。我没想到会这样,因为在其他游戏中我可以快速移动相机,而不会注意到这种效果。我有一段视频here,该视频是我遇到的流血现象。
编辑:由于YouTube将视频转换为30fps,请尝试以2倍的速度观看原始效果。另外,here是一个链接,以144fps的速度下载视频,以查看完整的原始效果。 This是git-hub信息库。我正在“基于时间的”分支中工作。