Я делаю игру в пигме, и когда вы стреляете в пулю, пуля движется в том же направлении, что и ваша мышь. Вот мой код для моего Player
класса:
class Player(pygame.sprite.Sprite):
def __init__(self, game, x, y):
self.game = game
pygame.sprite.Sprite.__init__(self, game.all_sprites)
self.image = pygame.Surface((50, 50))
self.image.fill(settings.player_color)
self.rect = self.image.get_rect()
self.rect.x, self.rect.y = x, y
self.pos = Vector2(x, y)
self.speed = Vector2(0, 0)
self.is_shooting = False
def update(self):
self.pos += self.speed
self.rect.x, self.rect.y = self.pos.x, self.pos.y
def shoot(self):
self.is_shooting = True
m_x, m_y = pygame.mouse.get_pos()
b_m_x, b_m_y = m_x - self.pos.x, m_y - self.pos.y
b = Bullet(self.game, self.rect.x - 50, self.rect.y - 50 / 2, b_m_x, b_m_y)
_, angle = (pygame.mouse.get_pos() - self.pos).as_polar()
b.rotate(_)
То, как я делаю путь пули, я делаю так, чтобы пуля имела наклон, как линия. b_m_x
и b_m_y
- это изменение x
и y
.
Я только начинаю изучать алгебру в этом году (мне 13 лет), и я научился рисовать линейные линии в прошлом году, поэтому, если есть более простой способ проложить путь пули, пожалуйста, дайте мне знать.
Вот мой код для моего класса пули
class Bullet(pygame.sprite.Sprite):
def __init__(self, game, x, y, run, rise):
pygame.sprite.Sprite.__init__(self, game.all_sprites)
self.image = pygame.Surface((15, 50))
self.image.fill((255, 0, 0))
self.rect = self.image.get_rect()
self.rect.x, self.rect.y = x, y
self.pos = pygame.math.Vector2(self.rect.x, self.rect.y)
self.speed = pygame.math.Vector2(x=run / settings.bullet_speed_offset, y=rise / settings.bullet_speed_offset)
def update(self):
self.pos += self.speed
self.rect.x, self.rect.y = self.pos.x, self.pos.y
def rotate(self, angle):
self.image = pygame.transform.rotozoom(self.image, angle, 1)
self.rect = self.image.get_rect()
Моя проблема в том, что чем дальше моя мышь от спрайта Player
, тем быстрее движется пуля (потому что, когда я нахожу наклон линии, чем больше разница между мышью и игроком, тем быстрее скорость пули будет). Как сделать лучшую систему стрельбы пулями?