Pygame圈碰撞?

时间:2014-12-24 21:16:02

标签: python python-2.7 pygame collision-detection

我正在使用pygame制作一个简单的游戏。我遇到了圆圈碰撞的问题。我收到以下错误:
“AtributeError:'pygame.Rect'对象没有attrinute'rect'”

以下是我遇到问题的特定代码:

    if pygame.sprite.collide_circle(hero_circle, enemy_circle):
          gameover()

提前致谢!

4 个答案:

答案 0 :(得分:1)

pygame.draw.rect()
draw a rectangle shape
rect(Surface, color, Rect, width=0) -> Rect

在Surface上绘制一个矩形形状。给定的Rect是矩形的区域。 width参数是绘制外边缘的粗细。如果width为零,则矩形将被填充。

请记住,Surface.fill()方法也适用于绘制填充矩形。事实上,Surface.fill()可以在某些平台上通过软件和硬件显示模式进行硬件加速。

答案 1 :(得分:1)

使用 pygame.mask 为对象创建碰撞网格,并使用网格进行碰撞检测。

更详细:

  1. 为您的两个圈创建一个图像文件,并将bg颜色设置为您不会在其他任何地方使用的颜色。
  2. 将该颜色设置为"透明"在你的图像编辑器中。
  3. 导入图像。
  4. 使用pygame.mask为它们创建一个网格,并将其设置为使透明像素不可碰撞。
  5. 使用生成的蒙版作为碰撞检测网格。
  6. PROFIT
  7. (从技术上讲,这只是对矩形上的圆形区域进行碰撞检测,但谁在乎呢!)

答案 2 :(得分:0)

就像gmk说的那样但是如果你使用 circle 而不是矩形,你应该使用这个pygame函数:

pygame.draw.circle(surface, color, center_point, radius, width)

这会在您的表面上绘制一个圆圈(可以在surface区域内)。显然,颜色需要一个数字列表(RGB任何人?)。您的center_point决定了您圈子的位置,因为它将是您圈子中心的位置。半径将需要一个数字来设置圆的半径(使用像25这样的数字将半径设置为25像素/直径为50像素)。 width部分是可选的,因为它设置了圆的周长(0表示根本没有)。如果你不使用圈子,你应该改变你的头衔......但无论如何,我希望这对你有帮助!

答案 3 :(得分:0)

我发现检查圆碰撞检测的最佳方法是计算两个圆的中心点之间的距离。如果距离小于两个圆的半径之和,那么你就发生了碰撞。