Work on pygame trigonometry error

I am creating a pygmake game designed for bullets to shoot in the direction of the mouse. I use a class to define markers in a list:

class Bullet:
    def __init__(self,pos,speed,size):
        self.pos = pos
        self.speed = speed
        self.size = size
    def move(self):
        self.pos[0] = int(self.pos[0] + self.speed[0])
        self.pos[1] = int(self.pos[1] + self.speed[1]) 

I use this trigonometry function to get the angle vector at which I'm going to shoot bullets.

def getUnitVector(x1, y1, x2, y2):
        delx = x2 - x1
        dely = y2 - y1
        m = math.sqrt(delx * delx + dely * dely)
        unit = (delx / m, dely / m)
        return unit
level = [

I do not use corners because I have to work around the pygame rounding error. these are the variables that I connect to the function.

mousex, mousey = pygame.mouse.get_pos()
    startx = 50
    starty = 400
aim = getUnitVector(startx, starty, mousex, mouse

This is how I handle the target and shoot bullets from the beginning of x, y

if pygame.mouse.get_pressed()[0]:
        if reload>10:
            bx = BULLETSPEED * aim[0]
            by = BULLETSPEED * aim[1]           
            bullet = Bullet([startx,starty], [bx,by],10)
            bullets.append(bullet)
            reload=0
        reload = reload + 1

. , , : L. , - python, , . . .

, , 20 - , .

+4
1

bullet , .

Pygame: Pygame.Rect Docs

:

    def move(self):
        self.dir = self.get_direction(self.target) # get direction
        if self.dir: # if there is a direction to move

            self.trueX += (self.dir[0] * self.speed) # calculate speed from direction to move and speed constant
            self.trueY += (self.dir[1] * self.speed)
            self.rect.center = (round(self.trueX),round(self.trueY)) # apply values to bullet.rect.center

: Pygame Sprite Movement

+1

All Articles