0

我正在制作一款名为 StarDodger 的游戏,我正在制作激光从船上射击

船舶坐标与鼠标坐标相同,我希望 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 pos 更改为 15

4

1 回答 1

0
  • 即使船的 x 坐标在火灾开始后移动,激光 x 坐标是否保持不变?
  • 最好在开始时加载你的精灵,看起来你可能正在加载重复的激光。
  • 在 mousedown 事件上抓取鼠标坐标

我不清楚没有图像的运动。

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

当你发射子弹/激光时,“生成”一个物体是很常见的。在 LMB 上(并且可以开火)然后 spawn Laser(pos=event.pos)。它会记住起始位置,并且会不断增长Laser.update(),直到死亡。如果它是一个精灵,你就这样做self.kill()

于 2013-06-10T05:02:58.097 回答