I'm making a space invaders type game and wanted to ask how i can make it so that the bullet in the following code doesn't follow the spaceship once its shot.
import pygame, random, math, sys
pygame.init()
window = pygame.display.set_mode((400, 700))
background = pygame.image.load('sky(background).png')
character = pygame.image.load('start-up.png')
characterX = 165
characterY = 600
x_speed = 0
def character_blit(x, y):
window.blit(character, (x, y))
bullet = pygame.image.load('torpedo (1).png')
bulletY = 600
y_speed_bullet = 0
def bullet_blit(x, y):
window.blit(bullet, (x, y))
comets = pygame.image.load('asteroid.png')
comet_x = random.randint(0, 336)
comet_y = 0
y_speed = 0.3
def comet_blit(x, y):
window.blit(comets, (x, y))
def iscollision(x1, y1, x2, y2):
distance = math.sqrt((math.pow(x1 - x2, 2))
+ (math.pow(y1 - y2, 2)))
if distance < 47:
return True
else:
return False
transparent = (0, 0, 0, 0)
score = 0
comets_that_hit_earth = 0
run = True
while run:
window.fill((0, 0, 0))
window.blit(background, (0, 0))
bulletX = characterX + 20
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x_speed = -0.3
if event.key == pygame.K_RIGHT:
x_speed = 0.3
if event.key == pygame.K_SPACE:
y_speed_bullet = y_speed * -1 * 2.3
bulletX =
collision = iscollision(bulletX, bulletY, comet_x, comet_y)
if collision:
score += 1
comet_y = -64
comet_x = random.randint(0, 336)
bulletY = 600
elif bulletY <= -24:
bulletY = 600
collision_player_and_comet = iscollision(characterX, characterY, comet_x, comet_y)
if collision_player_and_comet:
sys.exit()
characterX += x_speed
comet_y += y_speed
bulletY += y_speed_bullet
if characterX <= -64:
characterX = 400
elif characterX >= 464:
characterX = 0
if comet_y >= 764:
comet_y = 0
y_speed += 0.005
comets_that_hit_earth += 1
comet_x = random.randint(0, 336)
bullet_blit(bulletX, bulletY)
character_blit(characterX, characterY)
comet_blit(comet_x, comet_y)
pygame.display.update()
I tried to change the bulletX to the bulletX that it was when it was shot but couldn't manage it. Do I need to use a completely different system for the bullet or can i do it with mine.