这是我的椰子代码:
class Startbox(Layer):
def __init__(self):
Layer.__init__(self)
self.batch = BatchNode()
self.add(self.batch)
img = pyglet.image.load('images/map_sprites.png')
tileset = pyglet.image.ImageGrid(img, 3, 15, 96, 96)
x, y = 0, 0
for i in range(10):
for j in range(10):
spr = Sprite(tileset[1])
spr.x = x
spr.y = y
self.batch.add(spr)
x += 96
y += 96
x = 0
我正在尝试获取一个精灵,并且并排显示以覆盖窗口。该代码会产生错误的结果,图块之间有一个空格,如下所示:
我不明白为什么会发生这种情况,或者如何解决它。下面的 pyglet 代码基本上做同样的事情,但是精灵正确排列并且没有创建任何黑线:
class screen(pyglet.window.Window):
def __init__(self, w, h):
super(screen, self).__init__(w, h)
sprite_sheet = grid(pyglet.image.load("images/map_sprites.png"), 3, 15)
self.batch = pyglet.graphics.Batch()
self.all_sprites = []
x, y = 0, 0
for i in range(10):
for j in range(10):
sprite = pyglet.sprite.Sprite(sprite_sheet[1], batch=self.batch)
sprite.x = x
sprite.y = y
self.all_sprites.append(sprite)
x += 96
y += 96
x = 0
编辑:我找到了解决方案,为了清楚起见,我想把它作为答案发布,以防将来有人偶然发现这个问题,但我想编辑我的 OP 就足够了。
来自Cocos2d Google 群组列表中的Claudio Canepa :
您可以尝试在 director.init 调用中传递 do_not_scale=True ,这将使用更适合瓷砖的正投影。
您可以在脚本
test_tiles.py
test_tmx.py
test_platformer.py中查看 cocos tilemaps 的示例
实现非常简单:
if __name__ == '__main__':
director.init(width, height, do_not_scale=True)
director.run(Scene(Startbox()))