Python 知道在碰撞列表中碰撞了哪个矩形

Python 知道在碰撞列表中碰撞了哪个矩形,python,pygame,collision-detection,collision,Python,Pygame,Collision Detection,Collision,当我的子弹碰到一个矩形时,我试图在碰撞列表中找到一个特定的矩形。 我有92个矩形,每个矩形都有一个类型:“不透明”、“透明”。 当我在游戏启动时创建矩形时,我将它们放在一个列表中,以在测试列表之后进行测试。以及另一个按顺序包含所有类型的列表。 像 它们是按顺序创建的,因此第二个矩形是第二种类型 if new_bullet_list[n].collidelist(collide_wall_list) != -1: 这是为了测试我的子弹是否与矩形列表冲突。 现在的问题是,使用CollizeList

当我的子弹碰到一个矩形时,我试图在碰撞列表中找到一个特定的矩形。 我有92个矩形,每个矩形都有一个类型:“不透明”、“透明”。 当我在游戏启动时创建矩形时,我将它们放在一个列表中,以在测试列表之后进行测试。以及另一个按顺序包含所有类型的列表。 像

它们是按顺序创建的,因此第二个矩形是第二种类型

if new_bullet_list[n].collidelist(collide_wall_list) != -1:
这是为了测试我的子弹是否与矩形列表冲突。 现在的问题是,使用CollizeList,我们无法知道哪个矩形正在被碰撞。
你知道如何知道哪个矩形被碰撞了吗?然后对于类型,这将很容易,因为矩形和类型位于相同的位置。

collidelist返回第一次冲突的索引,如果没有发生冲突,则返回-1:

“测试矩形是否与一系列矩形中的任何矩形冲突。返回找到的第一个冲突的索引。如果未找到冲突,则返回-1索引。”


好的,您显然有一个函数,它检查是否发生了碰撞,返回-1?我不知道。但这是我的想法;试着让你的函数看起来像这样:

int IsCollision( "all your variables" + int n) { // n = the current rect's number
         if ("collision" == true) {
               return n;
            } else {
            return 0;
           }
}
当然,现在您需要将另一行更改为:

if new_bullet_list[n].collidelist(collide_wall_list) != 0: //colidelist will return "n", so the number of your rectangle. If that number is not equal to zero, a collision happened with your n'th rect.

我的函数已经存在,它是pygame.rect.CollizeList():p
if new_bullet_list[n].collidelist(collide_wall_list) != 0: //colidelist will return "n", so the number of your rectangle. If that number is not equal to zero, a collision happened with your n'th rect.