Python Pygame.Rect() 检测碰撞

最近在学Pygame,花一段时间做了一个异常简陋版的"飞机大战"。
简陋般的飞机大战
然后吧,就遇到了一个问题:
怎么检测碰撞呢?(个人太菜…)

按照网上教程比较普遍的方法(也可能是我没看见别的),碰撞检测依次计算移动物体与被碰撞物体各个边之间坐标是否相交.例如下列代码,检测小球与窗口的碰撞:

 if self.vector.x > WINDOW_X - self.image.get_width():
     self.vector.x = WINDOW_X -self.image.get_width()
 elif self.vector.x < 0:
     self.vector.x = 0

可是,因为这种方法由于需要加减各种数值,很容易多加一个少减一个,出现乱七八糟的错误。所以我想了一种相对简便些的方法。

Pygame.Rect正式登场!

pygame.Rect(enemy1[i-counte1][0]+3.5,enemy1[i-counte1][1]+3.5,43-3.5,57-3.5).colliderect(pygame.Rect(mems[0]+5,mems[1]+5,102-5,126-5))
#:D有些长

使用Pygame自带的方法Rect()将Surface对象转换成矩形对象,然后检测碰撞。

语法大概是这样的:

pygame.Rect(for_x,for_y,for_width,for_height)

然后用colliderect()语法检测碰撞。
colliderect()语法是这样的:

Rect对象.colliderect(另一个Rect对象)
return True/False #碰撞返回True,否则返回False

成功!
成功!

猜你喜欢

转载自blog.csdn.net/weixin_39441881/article/details/106962039
今日推荐