Как уже заметили в комментариях, проблема в том, что для прироста положения снаряда (вектора скорости) используется одна и та же глобальная переменная. Поэтому при обновлении все снаряды изменяют вектор на одинаковый. Нужно было использовать локальный аттрибут каждого снаряда для хранения скорости (фиксированный на момент создания, как я понимаю скорость и направление уже не должна меняться).
Навскидку вижу можно просто сделать так:
...
class Projectile(pygame.sprite.Sprite):
def __init__(self, weigth, heigth, corner):
...
# добавляем каждому снаряду свою скорость. вычисляем поворотом на передаваемый угол
self.projectile_speed = pygame.math.Vector2((4, 0)).rotate(-corner)
def update(self):
# и тут соответственно используем вектор скорости собственный для каждого снаряда
self.projectile += self.projectile_speed
spoilerЕще заметил, что английские названия ошибочны
heigth => height (высота)
weigth => weight (вес)
видимо имелось в виду width (ширина)
corner - в английском тоже значит "угол" но это не тот угол (как угол поворота), а как угол квадрата, угол комнаты.
для угла как направления используется angle
see = "видеть", наверное имелось в виду sea = "море".
Не критично конечно, но лучше привыкать к правильным названиям, чтобы у других изучающих код потом не возникло недопонимания.