python教程飞机大战项目之碰撞检测

白癜风资深专家 https://wapjbk.39.net/yiyuanfengcai/ys_bjzkbdfyy/

碰撞检测

目标

了解碰撞检测方法碰撞实现

01.了解碰撞检测方法

`pygame`提供了两个非常方便的方法可以实现碰撞检测:

pygame.sprite.groupcollide()

两个精灵组中所有的精灵的碰撞检测

```python

groupcollide(group1,group2,dokill1,dokill2,collided=None)-Sprite_dict如果将`dokill`设置为`True`,则发生碰撞的精灵将被自动移除

`collided`参数是用于计算碰撞的回调函数

如果没有指定,则每个精灵必须有一个`rect`属性

pygame.sprite.spritecollide()

判断某个精灵和指定精灵组中的精灵的碰撞

```python

spritecollide(sprite,group,dokill,collided=None)-Sprite_list

如果将`dokill`设置为`True`,则指定精灵组中发生碰撞的精灵将被自动移除

`collided`参数是用于计算碰撞的回调函数

如果没有指定,则每个精灵必须有一个`rect`属性

返回精灵组中跟精灵发生碰撞的精灵列表

02.碰撞实现

```python

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)

判断列表时候有内容

iflen(enemies)0:

让英雄牺牲

self.hero.kill()

结束游戏

PlaneGame.__game_over()




转载请注明:http://www.aierlanlan.com/rzdk/2604.html