У меня есть 2 спрайта, каждый из которых имеет свою собственную pygame.sprite.Group () и имеет rect.x и rect.y. Однако, когда я пытаюсь обнаружить столкновения между ними, нет никаких результатов. Помимо использования pygame.sprite.collide_mask, но он обнаруживает только первое столкновение, но не другие.
Хотя спрайты сталкиваются на экране.
Функции, которые проверяют столкновения, являются потоками. Я пробовал многие функции столкновений с pygame, такие как pygame.sprite.collide_mask, pygame.sprite.spritecollideany (),. , без результатов.
Когда я печатаю собственную личность каждого из спрайтов этих групп, он печатает, что все они являются спрайтами:
<attack1 sprite(in 1 groups)>
Основной код, который проверяет столкновения:
class attack1(pygame.sprite.Sprite,threading.Thread):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
threading.Thread.__init__(self)
self.image = self.imageAttack1.get_image(503 ,468 ,20 ,19)
self.image = pygame.transform.scale(self.image,(60,57)).convert_alpha()
self.lsAttack1.append(self.image)
self.rect = self.image.get_rect()
self.rect.y = 0
self.rect.x = 0
vr.spriteGroupAttack1.add(self)
self.start()
def run(self):
while vr.managementDisplay :
self.result = pygame.sprite.spritecollide(self,vr.spriteGroupCaracter1,False)
if self.result :
print('Yes')
или с группами:
def run(self):
while vr.managementDisplay :
self.result = pygame.sprite.groupcollide(vr.spriteGroupAttack1,vr.spriteGroupCaracter1,False)
if self.result :
print('Yes')
или с pygame.sprite.collide_mask
def run(self):
while vr.managementDisplay :
self.result = pygame.sprite.collide_mask(self,vr.lsCaracter[0])
if self.result :
print('Yes')
Ожидаемый результат - обнаружение столкновения.