Как исправить спрайт, входящий в блок из-за скорости - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь сделать столкновение между спрайтом и блоком.Проблема в том, что спрайт может немного войти внутрь блока, потому что когда столкновение активировано, оно уже вписало 10 пикселей (скорость).

Мой код о столкновениях немного запутан (в разных местах вкод), поэтому мне придется показать большой сегмент кода:

Код для pygame.Rect:

    pl = Sprite(300,520,40,40,5,pygame.image.load('s1.png '))
    obs1 = Sprite(200,200,130,130,0,pygame.image.load('obs1.png'))

    obs1_rect_left = pygame.Rect(obs1.x + obs1.width,obs1.y,0,obs1.height)
    obs1_rect_right = pygame.Rect(obs1.x ,obs1.y ,0,obs1.height)
    obs1_rect_down = pygame.Rect(obs1.x,obs1.y ,obs1.width,0)
    obs1_rect_up = pygame.Rect(obs1.x,obs1.y + obs1.width ,obs1.width,0)

Код в основном цикле:

    keys = pygame.key.get_pressed()

    if pl_rect.colliderect(obs1_rect_left):
        col_left = True
    else:
        col_left = False

    if pl_rect.colliderect(obs1_rect_right):
        col_right = True
    else:
        col_right = False

    if pl_rect.colliderect(obs1_rect_down):
        col_down = True
    else:
        col_down = False
    if pl_rect.colliderect(obs1_rect_up):
        col_up = True
    else:
        col_up = False




    if keys[pygame.K_w] and not(col_up):
        pl.y -= pl.vel

    if keys[pygame.K_s] and not(col_down):
        pl.y += pl.vel

    if keys[pygame.K_d] and not(col_right):
        pl.x += pl.vel

    if keys[pygame.K_a] and not(col_left):
        pl.x -= pl.vel

Я хочу, чтобы мой спрайт шел, но при этом никогда не входил в блок

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