Somehow I found the answer myself:
The problem was in the fact that I was adding and subtracting the camera values, so by removing the cameras x and y values the bug disappeared. I am not really sure why this solved it to be honest but I will take it. Here is how the code looks now for anyone curious:
def collide(self, direction):
hits = pg.sprite....