Pygame では、マウスの方向に発射される弾丸を作成できます。これを行うには、弾丸を表すクラスを作成し、マウスの位置に基づいてその初期位置と方向を設定する必要があります。
Bullet のクラス
まず、弾丸のクラスを作成します。このクラスには、弾丸の位置、サイズ、および表面の属性が含まれている必要があります。サーフェスは、画面上にレンダリングされるものです。
<code class="python">import pygame class Bullet: def __init__(self, x, y): self.x = x self.y = y self.height = 7 self.width = 2 self.bullet = pygame.Surface((self.width, self.height)) self.bullet.fill((255, 255, 255))</code>
ゲーム クラス関数
次に、ゲームのクラスを作成します。このクラスには、弾丸を発射および生成するための関数が含まれます。
<code class="python">class Game: def __init__(self): self.bullets = [] def shoot_bullet(self): mouse_x, mouse_y = pygame.mouse.get_pos() # Get the mouse position for bullet in self.bullets: rise = mouse_y - bullet.y # Calculate the difference between mouse and bullet y position run = mouse_x - bullet.x # Calculate the difference between mouse and bullet x position angle = math.atan2(rise, run) # Calculate the angle between mouse and bullet bullet.x += math.cos(angle) * 10 # Update bullet x position bullet.y += math.sin(angle) * 10 # Update bullet y position # Rotate and draw the bullet rotated_bullet = pygame.transform.rotate(bullet.bullet, -math.degrees(angle)) screen.blit(rotated_bullet, (bullet.x, bullet.y)) def generate_bullet(self): mouse_buttons = pygame.mouse.get_pressed() # Check if mouse is clicked if mouse_buttons[0]: # If left mouse button is clicked self.bullets.append(Bullet(player.x, player.y)) # Create a new bullet</code>
Bullet クラスの使用
メイン ゲーム ループで、Game クラスのインスタンスを作成し、関数shoot_bulletとgenerate_bulletを呼び出します。
<code class="python">game = Game() while running: # Event handling # Update game.shoot_bullet() game.generate_bullet() # Draw screen.fill((0, 0, 0)) for bullet in game.bullets: screen.blit(bullet.bullet, (bullet.x, bullet.y)) pygame.display.update()</code>
このコードは、マウスの方向に発射される弾丸を作成します。弾丸は画面から消えるまで移動します。
以上がPygameでマウスの方向に弾丸を発射するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。