Задать вопрос
  • Спрайт снаряд после выстрела поворачивается по направлению другого спрайта(танка). Не знаю почему так происходит?

    @o5a
    Как уже заметили в комментариях, проблема в том, что для прироста положения снаряда (вектора скорости) используется одна и та же глобальная переменная. Поэтому при обновлении все снаряды изменяют вектор на одинаковый. Нужно было использовать локальный аттрибут каждого снаряда для хранения скорости (фиксированный на момент создания, как я понимаю скорость и направление уже не должна меняться).
    Навскидку вижу можно просто сделать так:
    ...
        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 = "море".
    Не критично конечно, но лучше привыкать к правильным названиям, чтобы у других изучающих код потом не возникло недопонимания.
    Ответ написан
    1 комментарий