在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 類別並調用其更新和在主遊戲中應用方法循環:
# 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中文網其他相關文章!