如何在 pygame 中获得两个碰撞的精灵对象?
How to get both colliding sprite objects in pygame?
如果发生碰撞,有没有办法得到两个对象?
例如:
allSprite = pygame.sprite.Group()
Bullets = pygame.sprite.Group()
Enemies = pygame.sprite.Group()
bullet = Bullet()
enemy = Enemy()
Bullets.add(bullet)
Enemies.add(enemy)
hits = pygame.sprite.collide(Enemies,Bullets)
for hit in hits:
hit.damage()
这只会得到 Enemy
对象,但我想要这两个对象,因为我也需要子弹伤害。
您可以为此使用 groupcollide
函数:
http://www.pygame.org/docs/ref/sprite.html#pygame.sprite.groupcollide
你会得到一个敌人的字典(键)和每个敌人,一个击中它的子弹列表(值)。然后你可以这样做:
hits = pygame.sprite.groupcollide(Enemies, Bullets, False, True)
for enemy in hits:
for bullet in hits[enemy]:
enemy.damage(bullet.damage)
如果发生碰撞,有没有办法得到两个对象?
例如:
allSprite = pygame.sprite.Group()
Bullets = pygame.sprite.Group()
Enemies = pygame.sprite.Group()
bullet = Bullet()
enemy = Enemy()
Bullets.add(bullet)
Enemies.add(enemy)
hits = pygame.sprite.collide(Enemies,Bullets)
for hit in hits:
hit.damage()
这只会得到 Enemy
对象,但我想要这两个对象,因为我也需要子弹伤害。
您可以为此使用 groupcollide
函数:
http://www.pygame.org/docs/ref/sprite.html#pygame.sprite.groupcollide
你会得到一个敌人的字典(键)和每个敌人,一个击中它的子弹列表(值)。然后你可以这样做:
hits = pygame.sprite.groupcollide(Enemies, Bullets, False, True)
for enemy in hits:
for bullet in hits[enemy]:
enemy.damage(bullet.damage)