飞机和陨石的碰撞
Pygame 中的默认碰撞类型是使用 collide_rect 函数。这称为 AABB 碰撞。
为避免空白区域过早碰撞,可使用collide_rect_ratio函数,支持设置较小的参数,减少碰撞范围。
根据角色的外形,可以选择另一种碰撞类型函数 pygame.sprite.collide_circle
设置角色圆形半径
在 Player 类 __init()__ 方法中加入 角色半径代码,绘制中心圆形。
self.rect = self.image.get_rect()
self.radius = 20
pygame.draw.circle(self.image, RED, self.rect.center, self.radius)
在 Mob类 __init()__ 方法中加入 角色半径代码,绘制中心圆形。
self.radius = int(self.rect.width * .85 / 2)
更改碰撞类型
主循环中,修改检测飞机检测碰撞的代码
# ...
# 更新
all_sprites.update()
# 检查是否有敌人击中了玩家
hits = pygame.sprite.spritecollide(player, mobs, False, pygame.sprite.collide_circle)
if hits:
running = False
# ......