Я пишу шутер сверху вниз и недавно пытался найти способ непрерывного перемещения моего персонажа, удерживая нажатой клавишу. Я искал в интернете, чтобы найти способ, и нашел pygame.key.get_pressed()
, это прекрасно работало, пока я не попытался создать границы, чтобы вы не могли выйти за пределы экрана. Я в основном решил проблему, когда вы удерживаете клавиши перемещения, pygame не может проверить координаты x и y вашего игрока, поэтому он позволяет игроку выходить за пределы, даже когда вы добавляете что-то вроде if x >= 0:
.
Я спрашиваю, есть ли способ создать границу для сторон экрана, удерживая нажатой кнопку перемещения с помощью pygame.key.get_pressed()
, или есть хорошая альтернатива для перемещения.
Часть кода:
if eventHandler == "LEVEL1":
# SEE IF PLAYER QUIT AND PROCEED TO QUIT
for event in pygame.event.get():
if event.type == pygame.QUIT:
loop = False
if event.type == pygame.KEYDOWN:
keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
movingUP = True
if keys[pygame.K_DOWN]:
movingDOWN = True
if keys[pygame.K_LEFT]:
movingLEFT = True
if keys[pygame.K_RIGHT]:
movingRIGHT = True
if event.type == pygame.KEYUP:
movingUP = False
movingDOWN = False
movingLEFT = False
movingRIGHT = False
x_change = 0
y_change = 0
if movingUP == True:
y_change -= 5
if movingDOWN == True:
y_change += 5
if movingLEFT == True:
x_change -= 5
if movingRIGHT == True:
x_change += 5
# UPDATES EVERY TIME GAME LOOPS
pygame.display.update()
clock.tick(60)
x += x_change
y += y_change
if eventHandler == "LEVEL1":
w.blit(level1map, (0, 0))
w.blit(player, (x, y))
pygame.display.update()
Я уже пытался добавить (с границей 16)
if x >= 16:
x_change = 0
movingLEFT = 0
и т. Д. Со всеми направлениями. Я пробовал это практически везде, где это будет иметь смысл в коде Я также пытался поставить
if keys[pygame.K_LEFT] and x >= 16:
movingLEFT = True
"и переменная> = граница" везде, где она может быть границей, но результаты по-прежнему отсутствуют.
Любой способ создать работающую границу или альтернатива для перемещения?