Я достиг того, что мне нужно было сделать с помощью следующего кода, который является таким же, как и выше, с очень небольшой модификацией, которая объясняется в коде. Ответ @skrx и комментарий Ника А. помогли мне достичь этого.

опрос связан с этим вопросом:вращающийся пистолет с ограниченным движением

Какие расчеты вам нужно сделать, чтобы выстрелить из ствола пистолета?

мой код указан ниже

def gun_radar(self):

    for p in self.gameobjects:

        if "R" in p.name or "L" in p.name:

            if abs(p.rect.centerx - self.hero.rect.centerx) < p.radar and abs(p.rect.centery - self.hero.rect.centery) < p.radar:  # if hero within radar

                p.vec_to_target = pygame.math.Vector2(self.hero.rect.center) - p.rect.center
                p.direction = p.orig_direction.rotate(p.current_angle)
                p.orientation = p.vec_to_target.dot(p.direction)

                if p.orientation > 2:
                    p.current_angle += 1
                elif p.orientation < -2:
                    p.current_angle -= 1

                p.current_angle = p.clamp(p.current_angle, p.clamp_min, p.clamp_max)

                p.gun_rotate(-p.current_angle)

                self.blt_timer -= 1  #count down the timer. when zero calculate vector and add bullet to fired_blts

                if self.blt_timer<= 0:
                    w, h = p.rect.center
                    angle_in_rad = p.current_angle * (math.pi) / 180
                    w = w + math.cos(angle_in_rad)
                    h = h + math.sin(-angle_in_rad)
                    bullet = Bombullet(bulletimage, w, h)


                    bullet.xvel = bullet.speed * math.cos(angle_in_rad)
                    bullet.yvel = bullet.speed * math.sin(angle_in_rad)

                    bullet.rect.x += bullet.xvel
                    bullet.rect.y += bullet.yvel

                    self.fired_blts.add(bullet)
                    self.blt_timer = 100

когда герой попадает в круговую зону оружия, он активируется, и пуля стреляет из центра оружия.

Я двигаю пулю с

def move(self):

        self.rect.x += self.xvel

        self.rect.y += self.yvel
        print self.rect.x, self.rect.y, self.life
        self.life -= 1

пуля обновляется и стреляет в правильном направлении, но стреляет из центра пистолета. Как мне переместить точку стрельбы в морду?

Ответы на вопрос(2)

Ваш ответ на вопрос