LAG_x
@LAG_x

В list (python3) объекты как будто влияют друг на друга, где я мог сделать ошибку?

Ссылка на проект: https://github.com/LAGx/abstract_game.git
ошибка в game_objects/player/player.py (инициализация в __init__)
и game_objects/bullet/regular.py (отвечает за создание пуль игрока)

собственно вот в чем вопрос:
для того, чтобы можно было выстрелить сразу много независимых пуль я решил создать лист объектов пуль. Это работает, но каждая следующая пуля влияет на направление всех предыдущих:
вот это всё обновляется 60 раз в секунду(
if self.mousepress[0]: #эта штука создает новые объекты и помещает в лист (кстати, мне кажется что здесь и ошибка, мб оно на самом деле и не создает новый объект, а переопределяет старый)
            self.allBullets.append(game_objects.bullet.regular.RegularBullet([ self.pos[0], self.pos[1] ],    list(self.mouse)))

        for n in range(len(self.allBullets)):#эта фигня для отрисовки 
            self.allBullets[n].blit(canvas)
)

сам класс RegularBullet:
import phisic.vector
import pygame
from serving.cord import *

class RegularBullet:
    posi = [0, 0]
    vector = phisic.vector.Vector()
    color = [167,34,46]
    speed = 2#30
    isInit = False

    def __init__(self, start = [0,0], end = [0,0]):
        self.posi = start
        self.vector.changeXEx(end[0] - start[0])
        self.vector.changeYEx(end[1] + start[1])
        lenth = self.vector.getLenth()
        self.vector.changeXEx((self.vector.posX)/lenth)
        self.vector.changeYEx((-self.vector.posY)/lenth)
        self.isInit = True


    def blit(self, canvas):
        pygame.draw.line(canvas,self.color, [self.posi[0], -self.posi[1]], [self.posi[0]+self.vector.posX*self.speed*10, -self.posi[1]-self.vector.posY*self.speed*10], 4)
        self.posi[0] += self.vector.posX * self.speed
        self.posi[1] += self.vector.posY * self.speed

и, на всякий случай, вектор:
import numpy
import pygame

class Vector:
    posX = float(0)
    posY = float(0)


    def getLenth(self):
         return numpy.sqrt((self.posX * self.posX) + (self.posY * self.posY))



    #Ex - заменить
    #Plus - добавить
    def changeXEx(self,X):
        self.posX = X
    def changeXPlus(self,X):
        self.posX = self.posX + X
    def changeYEx(self,Y):
        self.posY = -Y
    def changeYPlus(self,Y):
        self.posY = self.posY + Y

Пару примеров ошибки:
сначала стреляю в одну сторону и всё норм
7ae568f8f40d4bb6be55b55709e746aa.png
потом, когда стреляю в другую сторону, ВСЕ пули меняют свое направление
b51d5ca4810e40a0ae3f10822db48453.png
  • Вопрос задан
  • 233 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы