在 pygame 中有没有办法找到组内的碰撞
Is there a way in pygame to find collisions within a group
pygame 模块在其各种碰撞检测方法中使用组。
我一直在努力寻找一种方法来查找精灵与同一组中包含的其他成员的碰撞。
在例子中-
pygame.sprite.spritecollide(creature, creaturegroup, False)
这继续为碰撞检测提供误报,我认为这是由于 'creature' 精灵包含在 'creaturegroup' 组中。有任何建议的解决方法来查找组内的冲突吗?
一种方法是创建一个临时 Group,其中包含所有 Sprites 但您要测试的那个:
test_group = pagame.sprite.Group([s for s in creaturegroup if s != creature])
pygame.sprite.spritecollide(creature, test_group, False)
另一种选择是编写您自己的测试函数,它会跳过相等的对象:
(参见 pygame.sprite.collide_rect()
)
def collide_if_not_self(left, right):
if left != right:
return pygame.sprite.collide_rect(left, right)
return False
pygame.sprite.spritecollide(creature, creaturegroup, False, collide_if_not_self)
pygame 模块在其各种碰撞检测方法中使用组。
我一直在努力寻找一种方法来查找精灵与同一组中包含的其他成员的碰撞。
在例子中-
pygame.sprite.spritecollide(creature, creaturegroup, False)
这继续为碰撞检测提供误报,我认为这是由于 'creature' 精灵包含在 'creaturegroup' 组中。有任何建议的解决方法来查找组内的冲突吗?
一种方法是创建一个临时 Group,其中包含所有 Sprites 但您要测试的那个:
test_group = pagame.sprite.Group([s for s in creaturegroup if s != creature])
pygame.sprite.spritecollide(creature, test_group, False)
另一种选择是编写您自己的测试函数,它会跳过相等的对象:
(参见 pygame.sprite.collide_rect()
)
def collide_if_not_self(left, right):
if left != right:
return pygame.sprite.collide_rect(left, right)
return False
pygame.sprite.spritecollide(creature, creaturegroup, False, collide_if_not_self)