目標
01. 了解碰撞檢測方法
-
pygame
提供了 兩個非常方便 的方法可以實現(xiàn)碰撞檢測:
pygame.sprite.groupcollide()
groupcollide(group1, group2, dokill1, dokill2, collided = None) -> Sprite_dict
- 如果將
dokill
設置為 True
躁劣,則 發(fā)生碰撞的精靈將被自動移除
-
collided
參數(shù)是用于 計算碰撞的回調(diào)函數(shù)
- 如果沒有指定,則每個精靈必須有一個
rect
屬性
pygame.sprite.spritecollide()
spritecollide(sprite, group, dokill, collided = None) -> Sprite_list
- 如果將
dokill
設置為 True
坡贺,則 指定精靈組 中 發(fā)生碰撞的精靈將被自動移除
-
collided
參數(shù)是用于 計算碰撞的回調(diào)函數(shù)
- 如果沒有指定,則每個精靈必須有一個
rect
屬性
- 返回 精靈組 中跟 精靈 發(fā)生碰撞的 精靈列表
02. 碰撞實現(xiàn)
def __check_collide(self):
# 1. 子彈摧毀敵機
pygame.sprite.groupcollide(self.hero.bullets, self.enemy_group, True, True)
# 2. 敵機撞毀英雄
enemies = pygame.sprite.spritecollide(self.hero, self.enemy_group, True)
# 判斷列表時候有內(nèi)容
if len(enemies) > 0:
# 讓英雄犧牲
self.hero.kill()
# 結(jié)束游戲
PlaneGame.__game_over()