【发布时间】:2021-11-16 19:38:52
【问题描述】:
第一次发帖,我不知道如何让游戏中的角色在镜头碰到屏幕边缘时拖动镜头。使用夹子只会阻止我的角色在击中某个点(而不是在我想要的位置)时移动。任何帮助将不胜感激。
import pygame, os
pygame.init()
SPEED = 10
SCREEN_W, SCREEN_H = 800, 600
MAP_W, MAP_H = SCREEN_W*3, SCREEN_H*3
WIN = pygame.display.set_mode((SCREEN_W, SCREEN_H))
FPS = 60
clock = pygame.time.Clock()
back = pygame.image.load("my_image")
BACKGROUND = pygame.transform.scale(back, (MAP_W, MAP_H))
CAMERA_X1, CAMERA_Y1, CAMERA_X2, CAMERA_Y2 = 0, 0, SCREEN_W, SCREEN_H
def draw_screen(player):
WIN.fill((255,255,255))
WIN.blit(BACKGROUND, (CAMERA_X1, CAMERA_Y1))
pygame.draw.rect(WIN, (0,0,0), (player.x, player.y, 50, 50))
pygame.display.update()
def handle_movement(pressed, player):
global CAMERA_X1, CAMERA_Y1, CAMERA_X2, CAMERA_Y2
if pressed[pygame.K_a]: #left
if player.x+50 < CAMERA_X1:
CAMERA_X1 -= SPEED*2
else:
player.x -= SPEED
if pressed[pygame.K_d]: #right
if player.x-50 > CAMERA_X2:
CAMERA_X2 += SPEED*2
else:
player.x += SPEED
if pressed[pygame.K_w]: #up
if player.y+50 < CAMERA_Y1:
CAMERA_Y1 -= SPEED*2
else:
player.y -= SPEED
if pressed[pygame.K_s]: #down
if player.y-50 > CAMERA_Y2:
CAMERA_Y2 += SPEED*2
else:
player.y += SPEED
def main(): #Main game loop
player = pygame.Rect(0, 0, 50, 50)
running = True
while running:
clock.tick(FPS)
draw_screen(player)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys_pressed = pygame.key.get_pressed()
handle_movement(keys_pressed, player)
pygame.quit()
if __name__ == "__main__":
main()
我对 pygame 比较陌生,所以请尽量解释清楚:)
【问题讨论】: