Python Pygame无循环获取坐标
我在做一个叫做星际道奇的游戏,我在做一个激光从飞船上射击 飞船坐标与鼠标坐标相同,我希望lser inamge从飞船坐标开始,然后让激光保持在x坐标并垂直移动 问题是,当我尝试获得坐标时,它们每一秒都会改变,因为游戏正在循环中更新 因此,我需要一种方法,当我按下鼠标按钮并且laser=True时获取坐标,并将这些坐标保存到一个变量,该变量在我再次按下之前不会更改 以下是发射激光的方法:Python Pygame无循环获取坐标,python,loops,mouse,pygame,Python,Loops,Mouse,Pygame,我在做一个叫做星际道奇的游戏,我在做一个激光从飞船上射击 飞船坐标与鼠标坐标相同,我希望lser inamge从飞船坐标开始,然后让激光保持在x坐标并垂直移动 问题是,当我尝试获得坐标时,它们每一秒都会改变,因为游戏正在循环中更新 因此,我需要一种方法,当我按下鼠标按钮并且laser=True时获取坐标,并将这些坐标保存到一个变量,该变量在我再次按下之前不会更改 以下是发射激光的方法: def laser_shoot(self): self.laser_img = pygame.imag
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
for event in pygame.event.get():
if event.type == MOUSEBUTTONDOWN:
# now use event.pos
当你发射子弹/激光时,“繁殖”一个物体是很常见的。在LMB上(火正常),然后产生激光(pos=event.pos)。它将记住起始位置,并将每一次
激光.update()
都会增长,直到死亡。如果它是一个精灵,你只需要做self.kill()
x-coord将保持不变,如果它工作正常,我只需要一种方法来获取鼠标位置一次,直到我再次单击鼠标,然后再进行更改。这样,你就可以在活动中抓住它,并将其保存到一个变量。我正在尝试,但它会循环事件,因此变量会不断更改我尝试了您给我的内容,但无法使其在事件中运行。在事件中,我有一条注释,您可以生成一个名为Laser
的新类,它会记住坐标。不管有多少新事件出现,每个实例都会记住它自己的位置。有趣的是,我并不真的想创建一个全新的类,但这可能是我尝试的最好方式