目标:实现子弹击中飞机的碰撞检查
子弹是个矩形,飞机也是矩形,只要简单是使用pygame.Rect.colliderect()这个函数就能判断是否碰撞了。
- pygame.Rect.colliderect() — 检测两个 Rect 对象是否重叠,碰了返回 True,否则返回 False
假设子弹的位置 bullet_rect ,飞机的位置 plane_rect
if pygame.Rect.colliderect(bullet.rect, plane_rect):
也可以用
bullet_rect.colliderect(plane_rect)
效果是一样的。
子弹或者飞机逃逸屏幕判断,也是同样的道理,屏幕也是一个Rect,用碰撞检查下,如果没碰撞了,就是逃逸了,很简单吧。
# 用一条语句实现了跑出屏幕的检查,我真是佩服我自己
if not self.rect.colliderect(self.main_scent.get_rect()):
print(self.rect)
看电影去了,演示代码待续。
bullet.py里,加入超出屏幕的检查,超过就自动退出所有 sprite.Grout()
import pygame
import math
import random
class Bullet(pygame.sprite.Sprite):
def __init__(self,scene):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load('images/bullet0.png')
sel