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'原来的矩形,在新的位置重新绘制。另一个矩形也一样。它们不重叠,因为移动太大,所以没有检测到碰撞。
它大部分时间检测到碰撞,但有时检测不到。这是碰撞检查器:
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'原来的矩形,在新的位置重新绘制。另一个矩形也一样。它们不重叠,因为移动太大,所以没有检测到碰撞。