«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как реализовать плавную прокрутку в играх Pygame Platformer?

Как реализовать плавную прокрутку в играх Pygame Platformer?

Опубликовано в 2025-03-22
Просматривать:258

How to Implement Smooth Scrolling in Pygame Platformer Games?

добавить прокрутку в платформер в pygame

в платформеровских играх, игроки перемещаются по уровням, в то время как их положение на экране остается центрированным. Этот эффект достигается за счет прокрутки, который позволяет игровому миру независимо от позиции игрока.

реализация прокрутки:

для реализации прокрутки в Pygame, используйте камеру , который определяет смещение между миром игры и позицией игрока. Это смещение затем применяется к позиции всех игровых сущностей, когда они нарисованы на экране. def __init __ (self, camera_func, ширина, высота): self.camera_func = camera_func self.state = rect (0, 0, ширина, высота) def Apply (Self, Target): return target.rect.move (self.state.topleft) Обновление DEF (Self, Target): self.state = self.camera_func (self.state, target.rect)

] camera_func:

определяет, как камера следует за игроком. Pixels.
class Camera:
    def __init__(self, camera_func, width, height):
        self.camera_func = camera_func
        self.state = Rect(0, 0, width, height)

    def apply(self, target):
        return target.rect.move(self.state.topleft)

    def update(self, target):
        self.state = self.camera_func(self.state, target.rect)
  • ] Функции камеры:
  • есть различные способы реализации Camera_func:

поддержание границ уровня:

def Complex_camera (камера, target_rect): x = -target_rect.center [0] win_width/2 y = -target_rect.center [1] win_height/2 Camera.topleft = (pygame.vector2 ((x, y)) - pygame.vector2 (camera.topleft)) * 0.06 # Добавить немного сглаживания Coolnes Camera.x = max (-(Camera.width-win_width), min (0, camera.x)) Camera.y = max (-(Camera.height-win_height), min (0, camera.y)) Вернуть камеру
  • ] Применение прокрутки на объекты:

    class Camera:
        def __init__(self, camera_func, width, height):
            self.camera_func = camera_func
            self.state = Rect(0, 0, width, height)
    
        def apply(self, target):
            return target.rect.move(self.state.topleft)
    
        def update(self, target):
            self.state = self.camera_func(self.state, target.rect)
    для применения прокрутки, создание класса камеры и вызовите ее обновление и применить в основной игре:
  • ## Создать камеру. Камера = камера (Complex_Camera, total_level_width, total_level_height) # Обновить камеру Camera.update (игрок) # Применить прокрутку ко всем объектам для E в сущностях: screen.blit (e.image, cameman.apply (e))

    Дополнительные соображения:

    class Camera:
        def __init__(self, camera_func, width, height):
            self.camera_func = camera_func
            self.state = Rect(0, 0, width, height)
    
        def apply(self, target):
            return target.rect.move(self.state.topleft)
    
        def update(self, target):
            self.state = self.camera_func(self.state, target.rect)
  • используйте
layeduedupdates

подкласс для обработки камеры Sprite Groups. нуждается. обрабатывать границы уровня, чтобы не дать игрокам не было экрана.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3