Pygame: Когда игрок попадает в правый барьер, а я нажимаю влево, он снова появляется в левой части экрана? Почему? - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь определить границы игрока на основе двух объектов справа и слева от экрана. Код отлично работает с левой стороны, но если я нажму правую границу и попытаюсь переместиться влево, персонаж переместится полностью влево и застрянет. Любая идея, почему это происходит?

depressed = pygame.key.get_pressed()
if (184 < plx) and  (plx < 965):
    if depressed[pygame.K_LEFT]: plx -=1
    if depressed[pygame.K_a]: plx -=1
    if depressed[pygame.K_RIGHT]: plx +=1
    if depressed[pygame.K_d]: plx +=1

if 184 == plx:
    if depressed[pygame.K_LEFT]: plx = plx
    if depressed[pygame.K_a]: plx = plx        
    if depressed[pygame.K_RIGHT]: plx +=1
    if depressed[pygame.K_d]: plx +=1

if 965 == plx:
    if depressed[pygame.K_LEFT]: plx = -1
    if depressed[pygame.K_a]: plx = -1    
    if depressed[pygame.K_RIGHT]: plx = 965
    if depressed[pygame.K_d]: plx = 965

Вот видео поведения.

1 Ответ

1 голос
/ 24 апреля 2020

Похоже,

if 965 == plx:
    if depressed[pygame.K_LEFT]: plx = -1
    if depressed[pygame.K_a]: plx = -1    
    if depressed[pygame.K_RIGHT]: plx = 965
    if depressed[pygame.K_d]: plx = 965

Должно быть

if 965 == plx:
    if depressed[pygame.K_LEFT]: plx -= 1
    if depressed[pygame.K_a]: plx -= 1    
    if depressed[pygame.K_RIGHT]: plx = 965
    if depressed[pygame.K_d]: plx = 965

, иначе вы устанавливаете свою позицию на -1, когда нажимаете влево.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...