5.优化碰撞

飞机和陨石的碰撞Pyga...

飞机和陨石的碰撞
Pygame 中的默认碰撞类型是使用 collide_rect 函数。这称为 AABB 碰撞。

blank
为避免空白区域过早碰撞,可使用collide_rect_ratio函数,支持设置较小的参数,减少碰撞范围。
blank
根据角色的外形,可以选择另一种碰撞类型函数 pygame.sprite.collide_circle
blank

设置角色圆形半径
在 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

    # ......

blank