私は StarDodger というゲームを作っていて、船から発射するレーザーを作っています。
船の座標はマウスの座標と同じで、lser inamge を船の座標から開始し、レーザーを x 座標にとどめて垂直に移動させたい
問題は、ゲームがループで更新されているため、こぼれた秒ごとに変更される座標を取得しようとするときです
そのため、マウス ボタンを押してレーザー = 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 座標でレーザーを照射し、ループする代わりに 15 で y 座標を作成し、ゲームがループするたびにレーザーの y 位置を 15 ずつ変更することです。