>백엔드 개발 >파이썬 튜토리얼 >파이게임 플랫포머 게임에서 부드러운 스크롤링을 구현하는 방법은 무엇입니까?

파이게임 플랫포머 게임에서 부드러운 스크롤링을 구현하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-12 20:05:11436검색

How to Implement Smooth Scrolling in Pygame Platformer Games?

Pygame에서 플랫폼 게임에 스크롤 추가

플랫폼 게임에서 플레이어는 화면의 위치를 ​​중앙에 유지하면서 레벨을 탐색합니다. 이 효과는 게임 세계가 플레이어의 위치와 독립적으로 움직일 수 있도록 하는 스크롤링을 통해 달성됩니다.

스크롤링 구현:

Pygame에서 스크롤링을 구현하려면 카메라 게임 세계와 플레이어 위치 사이의 오프셋을 정의하는 클래스입니다. 그런 다음 이 오프셋은 화면에 그려지는 모든 게임 엔터티의 위치에 적용됩니다.

카메라 클래스 생성:

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: 카메라가 카메라를 따라가는 방식을 결정합니다. 플레이어.
  • 너비, 높이: 레벨 크기(픽셀).

카메라 기능:

있음 구현하는 방법은 다양하다 Camera_func:

  • 플레이어 중앙 조정:

    def simple_camera(camera, target_rect):
      l, t, _, _ = target_rect  # l = left, t = top
      _, _, w, h = camera      # w = width, h = height
      return Rect(-l + HALF_WIDTH, -t + HALF_HEIGHT, w, h)
  • 레벨 유지 경계:

    def complex_camera(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 # add some smoothness coolnes
      camera.x = max(-(camera.width-WIN_WIDTH), min(0, camera.x))
      camera.y = max(-(camera.height-WIN_HEIGHT), min(0, camera.y))
      return camera

엔티티에 스크롤 적용:

스크롤을 적용하려면 Camera 클래스를 인스턴스화하고 해당 업데이트를 호출하고 메인 게임 내에서 메소드 적용 루프:

# Create the camera
camera = Camera(complex_camera, total_level_width, total_level_height)

# Update the camera
camera.update(player)

# Apply scrolling to all entities
for e in entities:
    screen.blit(e.image, camera.apply(e))

추가 고려 사항:

  • 카메라 인식 스프라이트 그룹을 처리하려면 LayeredUpdates 하위 클래스를 사용하세요.
  • 게임 속도에 따라 카메라 이동 속도와 가속도를 조정하세요.
  • 플레이어가 화면 밖으로 나가는 것을 방지하기 위해 레벨 경계를 처리합니다.

이 단계를 따르면 Pygame 플랫폼에서 스크롤을 구현하고 매끄럽고 매력적인 경험을 만들 수 있습니다. 플레이어입니다.

위 내용은 파이게임 플랫포머 게임에서 부드러운 스크롤링을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.