My collide_rect function isn't working properly. It always returns True, when it's not suppose to. I have tried looking on the internet but nothing is working for me. I think the collide rect somehow did not use the actual coordinates for the two sprites. Can anyone help with this?
import pygame import pygame.sprite import sys gameDisplay = pygame.display.set_mode((800,600)) pygame.display.set_caption("test_collision") clock = pygame.time.Clock() crashed = False class Ball(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("ball.png") self.rect = self.image.get_rect() self.x = 280 self.y = 475 self.col = False def update(self): gameDisplay.blit(self.image, (self.x,self.y)) self.rect = self.image.get_rect() def test_collisions(self,sprite): self.col = pygame.sprite.collide_rect(self,sprite) class Obstacle(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.x = 1000 self.y = 483 self.image = pygame.image.load("obstacle.png") self.time = pygame.time.get_ticks() self.rect = self.image.get_rect() def change_x(self): self.time = pygame.time.get_ticks() self.x = -(self.time/5) + 800 def update(self): self.rect = self.image.get_rect() gameDisplay.blit(self.image,(self.x,self.y)) obstacle = Obstacle() ball = Ball() while not crashed: for event in pygame.event.get(): if event.type == pygame.QUIT: crashed = True gameDisplay.fill((255,255,255)) ball.update() obstacle.change_x() obstacle.update() ball.test_collisions(obstacle) if ball.col: print("colided") pygame.display.flip() clock.tick(1000) pygame.quit() sys.exit() P.S This is my first post :)