Rect上的Pygame碰撞

时间:2013-06-11 04:34:03

标签: python pygame collision-detection

我是高中的计算机程序设计专业的学生,​​真的需要帮助才能让广场成为船只无法进入的障碍物,一旦你在广场上射击同样的东西,子弹就会消失。如果它们相互碰撞,两艘船都会死亡。请帮助我知道我的问题不是最好的措辞,但我真的需要帮助。

代码链接在https://docs.google.com/file/d/0B-Pb_T-Vgr3-TnhRY0lvVjJHX0U/edit?usp=sharing

1 个答案:

答案 0 :(得分:1)

我建议您创建一个GameObject类,它扩展pygame.sprite.Sprite以及扩展GameObject的Ship和Bullet类。这允许您轻松添加两者都需要的属性,例如速度和加速度,并且您可以创建一个碰撞方法,该方法被特定行为两者覆盖。这里额外的好处是pygame.sprite.collide_rect将正常工作:

if (pygame.sprite.collide_rect(sprite1, sprite2)):
    # sprite1 and sprite2 are colliding!
    # do something, such as calling sprite1.collide(sprite2) 
    # and sprite2.collide(sprite1)

因此,pygame.sprite.collide_rect检查两个精灵是否使用每个精灵的Sprite.rect属性发生碰撞。也可以使用rect.colliderect重新概括此功能:

sprite1.rect.colliderect(sprite2.rect)