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:プレーヤーの中央揃え:
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))
追加の考慮事項:
以上がPygame プラットフォーマー ゲームでスムーズ スクロールを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。