Ссылка на проект:
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](https://habrastorage.org/files/7ae/568/f8f/7ae568f8f40d4bb6be55b55709e746aa.png)
потом, когда стреляю в другую сторону, ВСЕ пули меняют свое направление