Как узнать колиззию пули c врагом в pygame
Вообщем я хочу уничтожить врага когда он касается пули. Я пытался сделать это но ничего не выходит. Я искал в гугле и на форумах.
import pygame, random
from threading import Thread
pygame.init()
window = pygame.display.set_mode((500, 500))
pygame.display.set_caption("Test game")
BLACK = (0,0,0)
ebullets = 5
global stop
stop = False
bullets_font = pygame.font.SysFont('opensansbold.ttf', 500)
lose_font = pygame.font.SysFont('opensansbold.ttf', 100)
lose_label = lose_font.render('YOU LOSE', 1, (0,0,0))
enemysprite = pygame.transform.scale(pygame.image.load('enemy.png'), (50, 50))
bullet = pygame.image.load('bullet.png')
global is_lose
is_lose = False
velx,vely=0, 0
global x,y
x,y=225, 450
width=40
height=60
vel=5
class enemy(object):
def __init__(self, mx, my):
self.x = mx
self.y = my
self.surf = pygame.Surface((self.x, self.y))
def draw(self):
window.blit(enemysprite, (self.x, self.y))
return self.surf.get_rect()
class projectile(object):
def __init__(self, mx, my):
self.x = mx
self.y = my
def draw(self):
return pygame.draw.rect(window, BLACK, (self.x, self.y, 30, 30))
enemies = []
enemies.append(enemy(250,100))
enemies.append(enemy(250,150))
enemies.append(enemy(250,200))
def redrawGameWindow():
if bullets:
for bullet in bullets:
if bullet.y < 0:
bullets.remove(bullet)
print('destroyed')
else:
bullet.y -= 10
global bul
bul = bullet.draw()
pygame.display.update()
bullets = []
running = True
while running:
pygame.time.delay(50)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
stop = True
pygame.quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
if ebullets != 0:
if len(bullets) <= 5:
ebullets -= 1
bullets.append(projectile(x+10, y+50))
else:
is_lose = True
keys = pygame.key.get_pressed()
if keys[pygame.K_a] and x > 0:
x -= 10
if keys[pygame.K_d] and x < 450:
x += 10
bullets_label = bullets_font.render(str(ebullets), 1, (130, 130, 130))
window.fill((230, 230, 230))
pygame.draw.rect(window, (0, 0, 0), (x, y, 50, 50))
window.blit(bullets_label, (150, 100))
if is_lose:
window.blit(lose_label, (75, 200))
redrawGameWindow()
Источник: Stack Overflow на русском