PyGame:为什么碰撞效果不佳?

PyGame: why isn't collision working well?

它大部分时间检测到碰撞,但有时检测不到。这是碰撞检查器:

def collide_check(this, object_1):
    bullet_rect = this.image.get_rect().move(this.bullet_x, this.bullet_y)
    object_1_rect = object_1.image.get_rect().move(object_1.ice_x, object_1.ice_y)
    if bullet_rect.colliderect(object_1_rect):
        #consequences of collision 

如果您对同一个对象多次调用 collide_check(),我可能已经找到问题的原因。

由于未知原因,如果在已经检测到碰撞的对象上调用它,.colliderect() 将不会检测碰撞。

有关详细信息,请参阅此 问题。

看起来像典型的 'Bullet through paper' 问题。

由于 .move() 没有子步骤,您根本就没有与另一个矩形重叠,因此不满足碰撞条件。

简单地说:你'erase'原来的矩形,在新的位置重新绘制。另一个矩形也一样。它们不重叠,因为移动太大,所以没有检测到碰撞。