Я пытаюсь сделать столкновение между спрайтом и блоком.Проблема в том, что спрайт может немного войти внутрь блока, потому что когда столкновение активировано, оно уже вписало 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
Я хочу, чтобы мой спрайт шел, но при этом никогда не входил в блок