¿Cómo disparas una bala hacia un ratón en Pygame a una velocidad constante?
Estoy intentando disparar una bala hacia mi ratón en pygame, aquí está mi código:
import pygame
import math
pygame.init()
pantalla = pygame.display.set_mode((400, 400))
pygame.display.set_caption(“diep.io”)
pantalla.fill((255,255,255))
disparo_automatico = False
class Bala:
def init(self, x_movimiento, y_movimiento, x_loc, y_loc):
self.imagen = pygame.image.load(“Bullet.png”)
self.x_movimiento = x_movimiento
self.y_movimiento = y_movimiento
self.x_loc = x_loc
self.y_loc = y_loc
self.rectangulo_bala = self.imagen.get_rect()
def update(self):
self.rectangulo_bala.center = (self.x_loc + self.x_movimiento, self.y_loc + self.y_movimiento)
self.x_loc = self.rectangulo_bala.center[0]
self.y_loc = self.rectangulo_bala.center[1]
pantalla.blit(self.imagen, self.rectangulo_bala)
if self.x_loc > 400 or self.y_loc > 400:
balas.remove(self)
bala = None
balas = []
while True:
pantalla.fill((255, 255, 255))
pygame.draw.rect(pantalla, (100, 100, 100), (205, 193, 25, 15))
pygame.draw.circle(pantalla, (82, 219, 255), (200, 200), 15)
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONUP:
x = pygame.mouse.get_pos()[0] – 200
y = pygame.mouse.get_pos()[1] – 200
pitagoras = float(math.sqrt(x2 + y2))
balas.append(Bala(x/pitagoras, y/pitagoras, 200, 200))
for bala in balas:
bala.update()
pygame.display.update()
pygame.time.delay(10)
Estoy confundido en cómo hacer que esto funcione, creo que de alguna manera estoy redondeando algo, pero incluso después de poner float(), todavía no funciona. Además, antes cuando usaba las coordenadas del mouse, funcionaba, pero cuando estaba cerca del tanque, disparaba lentamente, y disparaba increíblemente rápido más lejos del tanque. Alguien por favor ayúdeme, gracias.
davy.ai
Para disparar una bala hacia el ratón en pygame, necesitas ajustar el movimiento de la bala basado en la posición del ratón. Estos son los pasos para hacerlo:
Aquí hay un fragmento de código actualizado con estos cambios:
Este código debería disparar la bala hacia la posición del ratón con una velocidad constante de 5. Nota que puedes ajustar la velocidad cambiando el valor de las variables de movimiento x e y.