它大多数时候会检测到冲突,但有时不会。
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
发布于 2018-06-09 04:48:22
看起来像是典型的“穿纸子弹”问题。
因为.move()没有子步进,所以你不会和其他的rect重叠,因此不会满足碰撞检测条件。
简单地说:你‘擦除’原来的矩形,并在新的位置重新绘制它。另一个rect也是如此。它们不重叠,因为移动太大,因此没有检测到碰撞。
发布于 2018-06-09 04:38:18
如果您在同一对象上多次调用collide_check()
,我可能已经找到了问题的原因。
由于未知的原因,如果在已经检测到冲突的对象上调用.colliderect()
,它将不会检测到冲突。
有关详细信息,请参阅此similar问题。
https://stackoverflow.com/questions/50768000
复制相似问题