Python Pygame无循环获取坐标

Python Pygame无循环获取坐标,python,loops,mouse,pygame,Python,Loops,Mouse,Pygame,我在做一个叫做星际道奇的游戏,我在做一个激光从飞船上射击 飞船坐标与鼠标坐标相同,我希望lser inamge从飞船坐标开始,然后让激光保持在x坐标并垂直移动 问题是,当我尝试获得坐标时,它们每一秒都会改变,因为游戏正在循环中更新 因此,我需要一种方法,当我按下鼠标按钮并且laser=True时获取坐标,并将这些坐标保存到一个变量,该变量在我再次按下之前不会更改 以下是发射激光的方法: def laser_shoot(self): self.laser_img = pygame.imag

我在做一个叫做星际道奇的游戏,我在做一个激光从飞船上射击

飞船坐标与鼠标坐标相同,我希望lser inamge从飞船坐标开始,然后让激光保持在x坐标并垂直移动

问题是,当我尝试获得坐标时,它们每一秒都会改变,因为游戏正在循环中更新

因此,我需要一种方法,当我按下鼠标按钮并且laser=True时获取坐标,并将这些坐标保存到一个变量,该变量在我再次按下之前不会更改

以下是发射激光的方法:

def laser_shoot(self):
    self.laser_img = pygame.image.load('rec/game/laser.png')
    self.laser_img_r = self.laser_img.get_bounding_rect()
    self.mouse_pos = pygame.mouse.get_pos()
    self.mouse_x, self.mouse_y = self.mouse_pos
    self.laser_img_r.y+=15
    (self.laser_x, self.laser_y) = (self.mouse_x,self.laser_img_r.y)
    screen.blit(self.laser_img,(self.laser_x, self.laser_y))
如果self.laser==True和pygame.mouse.get_pressed()[0]:

它现在所做的是获得鼠标的x坐标和y坐标,然后在鼠标x坐标处闪烁激光,使y坐标为15,而不是在每次游戏循环时循环并改变激光y坐标为15
  • 即使飞船的x坐标在开火后移动,激光x坐标是否保持不变
  • 最好在开始时加载精灵,看起来您可能正在加载重复的激光器
  • 获取mousedown事件上的鼠标坐标
  • 我不清楚没有图像的运动

    for event in pygame.event.get():
        if event.type == MOUSEBUTTONDOWN:
            # now use event.pos
    

    当你发射子弹/激光时,“繁殖”一个物体是很常见的。在LMB上(火正常),然后产生激光(pos=event.pos)。它将记住起始位置,并将每一次
    激光.update()
    都会增长,直到死亡。如果它是一个精灵,你只需要做
    self.kill()

    x-coord将保持不变,如果它工作正常,我只需要一种方法来获取鼠标位置一次,直到我再次单击鼠标,然后再进行更改。这样,你就可以在活动中抓住它,并将其保存到一个变量。我正在尝试,但它会循环事件,因此变量会不断更改我尝试了您给我的内容,但无法使其在事件中运行。在事件中,我有一条注释,您可以生成一个名为
    Laser
    的新类,它会记住坐标。不管有多少新事件出现,每个实例都会记住它自己的位置。有趣的是,我并不真的想创建一个全新的类,但这可能是我尝试的最好方式