Прокрутка большого спрайта в фоновом режиме

Я пытаюсь преобразовать простую игру, написанную на pygame, в pyglet. Я почти во всем разобрался, но теперь я столкнулся с такой ситуацией, у меня есть фоновый спрайт, как в этом примере:

введите описание изображения здесь

В моем коде 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.

Я пытаюсь сделать то же самое в pyglet внутри функции def update (self, dt):, но я точно не знаю, как это сделать. Я имею в виду, что понимаю значение 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, не идеально выровнен.

ОБНОВЛЕНИЕ / 2 ВРЕМЕННОЕ РЕШЕНИЕ

Наконец я перешел к совершенно другому решению. Я разбиваю изображение по единому шаблону примерно так:

введите описание изображения здесь

а затем я повторяю это много раз, чтобы заполнить ширину экрана плюс 2. Затем я перемещаю их все, и когда первый полностью выходит за пределы экрана, я удаляю из массива и добавляю новый.

Я не знаю, есть ли лучшее решение, пока все в порядке.


person NiBE    schedule 16.06.2015    source источник
comment
Pygame и Pyglet - две разные вещи.   -  person Malik Brahimi    schedule 16.06.2015
comment
Я знаю, спасибо, я действительно конвертирую свою маленькую игру из pygame в pyglet, чтобы лучше понять последний. Мне это кажется более понятным и быстрым, но все же мне нужно учиться   -  person NiBE    schedule 16.06.2015