Если игрок имеет возможность пересекаться с несколькими объектами имеет смысл сохранить объекты в списке и тогда можно будет точно определить когда игрок начал взаимодействие с каким либо обьектом
class Player(object):
    def __init__(self):
        self.colliders = list()
    def collide(self, xvel, yvel,  plantlist):
        for plant in plantlist:
            collide = collide_rect(self, plant)
            if collide and plant in self.colliders:
                # Выполняется каждый раз пока игрок пересечен с растением
                pass
            if collide and not plant in self.colliders:
                self.colliders.append(plant)
                # Выполняется только один раз при пересечении с растением
            if not collide and plant in self.colliders:
                self.colliders.remove(plant)
                # Выполняется только один раз когда игрок перестает пересекаться с растением