在我的自上而下的射击游戏中,导弹的速度取决于鼠标点击角色的距离。 我不希望这样。 如果没有办法修复我的代码,解决这个问题的正确方法是什么? 这是我的导弹类:

class Missile(pygame.sprite.Sprite):
    def __init__(self, startx, starty, end_point):
        pygame.sprite.Sprite.__init__(self)

        self.screen = pygame.display.get_surface()
        self.area = self.screen.get_rect()
        self.image = rot_center(pygame.image.load("missile.gif"), angle)
        self.rect = self.image.get_rect()
        self.rect.center = startx, starty
        self.target = end_point
        self.start_point = startx, starty
        self.speed_constant = .05
        self.target_hit = False


    def update(self):
#the following few lines appear to be what my problem is
        speed = [self.speed_constant*(self.target[0] - self.start_point[0]),self.speed_constant*(self.target[1] - self.start_point[1])]
        self.rect.move_ip(speed)
        if self.rect.left < 0 or self.rect.right > self.area.width or self.rect.top < 0 or self.rect.bottom > self.area.height:
            self.kill()

===============>>#1 票数:2 已采纳

您可以将速度矢量除以其大小以标准化速度。 您的速度变量定义为: speed=(x,y)

你可以把它改成

speed=(x/m,y/m)其中m=sqrt(x^2+y^2)

无论你的目标有多远,它都会给你一个恒定的速度。 如果蓝色矢量的尖端代表你的目标而导弹位于原点。 绿色矢量表示归一化的速度矢量。

在此输入图像描述

  ask by user3555589 translate from so

未解决问题?本站智能推荐: