ホームページ > バックエンド開発 > Python チュートリアル > Pygame プラットフォーマー ゲームでスムーズ スクロールを実装するにはどうすればよいですか?

Pygame プラットフォーマー ゲームでスムーズ スクロールを実装するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-12 20:05:11
オリジナル
391 人が閲覧しました

How to Implement Smooth Scrolling in Pygame Platformer Games?

Pygame のプラットフォーマーにスクロールを追加する

プラットフォーマー ゲームでは、プレーヤーは画面上の位置を中央に保ちながらレベル間を移動します。この効果はスクロールによって実現され、ゲームの世界がプレイヤーの位置とは独立して移動できるようになります。

スクロールの実装:

Pygame でスクロールを実装するには、Camera クラス。このオフセットは、すべてのゲーム エンティティが画面上に描画されるときにその位置に適用されます。

カメラ クラスの作成:

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: カメラがどのようにカメラを追跡するかを決定します。 player.
  • 幅、高さ: ピクセル単位のレベルのサイズ。

カメラ機能:

を実装するにはさまざまな方法があります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 クラスをインスタンス化し、その update とメインゲーム内でメソッドを適用するループ:

# 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 プラットフォーマーにスクロールを実装し、スムーズで魅力的なエクスペリエンスを作成できます。プレイヤー。

以上がPygame プラットフォーマー ゲームでスムーズ スクロールを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート