我有一群精灵,我正在尝试测试碰撞。但是,我似乎在我的玩家精灵和我的敌人精灵之间立即发生了很多碰撞。
我试过了:
hits = pygame.sprite.spritecollide(player, enemy_list, True)
print "hits is this long: " + str(len(hits))
for i in hits:
player.damage()
但这会立即杀死我所有的敌人。我加入了
self.rect = self.image.get_rect()
对象。
然后我试过了:
for o in enemy_list:
o.draw()
if pygame.sprite.collide_rect(player, o)==True:
print "careful " + str(player.health)
player.damage()
但又一次,没有。
检测敌人和玩家之间碰撞的最简单方法是什么? TIA
我的整个代码可见: https://github.com/kabads/zoomr/blob/master/zoomr.py
答案 0 :(得分:0)
这是因为你的pygame
每秒运行你的主循环数百次。因此,你可能会想到的是一个简单的碰撞,然后通过,解释器将解释你的玩家每次作为一个命中经过一个敌人,所以它将如此迅速地运行,你的敌人/玩家将几乎立即死亡。为了避免这个问题,你应该让两个互相反弹,这样一次只能发生一次碰撞。这可以通过翻转dx
或dy
值(如果有的话)来完成。
我建议您查看一下:http://www.petercollingridge.co.uk/pygame-physics-simulation/boundaries
看看他如何将球精灵移回框中,如果它超出边界,并反转行进方向。
希望它有所帮助。