我试图转换pyglet中用pygame编写的简单游戏。 我几乎弄清楚了一切,但现在我面对这种情况, 我有一个像这个例子的背景精灵:
在我的pygame代码中,我用它写这个让它在后台顺利滚动:
base_shift = self.graphic.IMAGES['base'].get_width() - self.COMMON_CONST['screenWidth']
while True:
base_x = -((-base_x + 3) % base_shift)
self.screen.blit(self.graphic.IMAGES['base'], (base_x, y))
基本上图像比实际屏幕长,一旦它通过图像X和屏幕X之间的增量值,图像再次设置为0。
我试图在 def update(self,dt):函数中的pyglet中做同样的事情,但我不知道该怎么做。我的意思是我理解dt的含义,但仍然..现在移动图像我做这样的事情:
def update(self, dt):
self.base.x -= 15 * dt
当然这将继续移动并且不会重置他的位置。 我怎样才能复制我在pygame中所做的行为?
谢谢
更新
我试试这段代码:
def update(dt):
self.base.x = -((-(self.base.x - 15 * dt)) % base_shift)
它似乎工作但是当它回到0时它并不平滑并不完美对齐。
UPDATE / 2 TEMPORARY SOLUTION
我终于找到了另一个完全不同的解决方案。我将图像分成单个图案,如下所示:
然后我重复多次以填充屏幕宽度加2.然后我移动所有这些,当第一个完全超出屏幕尺寸时,我从数组中删除并添加一个新的。
我不知道到目前为止是否有更好的解决方案。