在相机控制游戏循环中的十六进制网格,抖动问题(由于错误的位置?)

问题描述:

我是相当新的编程,但我设法学习如何设置一个基本的游戏循环与左/右/上/向下控制。唯一的问题是当相机移动时出现图形故障(来回抖动)。我已经研究过双缓冲,但我认为问题可能在于仓位如何存储,但我无法弄清楚。在相机控制游戏循环中的十六进制网格,抖动问题(由于错误的位置?)

抖动

via GIPHY

下面的视频是该项目https://github.com/Im300/HexTest

具体而言,我认为这个问题是与六角类,它是由

G2D存储和转化的方式.translate(cam.getX(),cam.getY());

函数由GamePanel类调用。我试图通过改变相机和六边形类(周边存储,四舍五入等)来修复它,但毛刺仍在继续。

我用这个hex网格的实现。 (Algorithm to generate a hexagonal grid with coordinate system

非常感谢

你的代码简单地服用后一看,很可能是因为您处理双打VS整数的方式。也许一些舍入误差是你问题的根源。

我建议你为摄像头和十六进制的所有“点”值使用双打。然后你可以在绘制方法中将这些双打转换成整数。这将保证你的逻辑中的任何可能的舍入误差都会减少到几乎没有。

+0

我试过改变一切双打,但取决于相机速度/线厚度等电网不断振动稍微或口吃。即使相机位置和十六进制位置都以double形式保存,然后在绘制时截断,似乎最终结果仍然不够精细,无法进行平滑渲染。 https://giphy.com/gifs/JBzG7UcL5rNvy – lm300Q