我正在使用Python 3.4.3 (Win8.1)上的PyGame 1.9.2。
我的游戏窗口由使用48x48px瓷砖的平铺地图组成。游戏框架根据玩家输入移动瓷砖,使用游戏框架类的以下方法:
def moveTiles(self):
xmove = self.parent.dt * self.panning[0] * self.panning_speed
ymove = self.parent.dt * self.panning[1] * self.panning_speed
for tile in self.game_map:
tile.x += xmove
tile.y += ymove
tile.rect.x = int(tile.x)
tile.rect.y = int(tile.y)
tile.pos = (tile.rect.x, tile.rect.y)
虽然"self.panning_speed"相当容易理解,但是self.panning是一个包含x和y平移两个值的列表(例如[0, 0]表示没有平移,[-1, 1]表示向下左平移等)。
然后,tile.x/tile.y的值被转换为整数以用作矩形和pos的x/y值(后者用于blitting)。
我对每个tile的x/y值添加了完全相同的数量,然后在它们上面使用"int",据我所知,这总是将float向下取整到下一个更低的整数。因此,从技术上讲,相对于任何其他tile的x/y值,每个单独tile的x/y值的相对变化都是完全相同的。
然而:我仍然会不时地出现行或列之间的间隙!这些间隙出现得不规则,但非常明显,当您停止平移时,如果有间隙可见,则该间隙将保留直到您再次平移。
请参见以下图像示例: 请参见此图像示例(红色正方形中的黑线是间隙;金色和粉色是tile)
我的代码中哪里可能会出现这些间隙?