Pygame无循环获取坐标

2024-06-11 13:09:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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

飞船坐标与鼠标坐标相同,我希望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))

激光只发射if self.laser == True and pygame.mouse.get_pressed()[0]:

它现在所做的是得到鼠标的x和y坐标,然后在鼠标x坐标上闪烁激光,使y坐标为15,而不是在每次游戏循环时循环和改变激光y位置为15


Tags: 方法posselftrue游戏imgget鼠标
1条回答
网友
1楼 · 发布于 2024-06-11 13:09:09
  • 即使飞船的x坐标在开火后移动,激光x坐标是否保持不变?你知道吗
  • 最好在开始时加载精灵,看起来您可能正在加载重复的激光器。你知道吗
  • 在mousedown事件中获取鼠标坐标

我不清楚没有图像的运动。你知道吗

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

当你发射子弹/激光时,通常会“产生”一个物体。在LMB上(火是可以的),然后生成Laser(pos=event.pos)。它将记住起始位置,并将每隔Laser.update()增长一次,直到死亡。如果是精灵,你就做self.kill()。你知道吗

相关问题 更多 >