1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| def collisionDetection(char, listObj):
for obj in listObj:
if char.rect.colliderect(obj.rect):
print(f" {char.rect.x}, {char.rect.y}")
#hit from the object point of view
hitLeft = char.rect.right > obj.rect.left # Moving right
hitRight = char.rect.left < obj.rect.right # Moving left
hitTop = char.rect.bottom > obj.rect.top # Moving down
hitBottom = char.rect.top < obj.rect.bottom # Moving up
print(f"{hitLeft} {hitRight} {hitTop} {hitBottom}")
#from the object point of view
if hitRight and (hitTop or hitBottom): # hit by the right side
print("hit left")
char.rect.right = obj.rect.left
if hitLeft and (hitTop or hitBottom): # hit by the left side
print("hit right")
char.rect.left = obj.rect.right
if hitTop and (hitRight, hitLeft): # land on the top side
print("hit top")
char.touchGround()
char.rect.bottom = obj.rect.top
if hitBottom and (hitRight or hitLeft): # Moving up; Hit the bottom side
print("hit bottom")
char.rect.top = obj.rect.bottom
print(f" {char.rect.x}, {char.rect.y}") |