Pygame假精灵碰撞

时间:2014-05-04 08:51:46

标签: python pygame

我有一群精灵,我正在尝试测试碰撞。但是,我似乎在我的玩家精灵和我的敌人精灵之间立即发生了很多碰撞。

我试过了:

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

1 个答案:

答案 0 :(得分:0)

这是因为你的pygame每秒运行你的主循环数百次。因此,你可能会想到的是一个简单的碰撞,然后通过,解释器将解释你的玩家每次作为一个命中经过一个敌人,所以它将如此迅速地运行,你的敌人/玩家将几乎立即死亡。为了避免这个问题,你应该让两个互相反弹,这样一次只能发生一次碰撞。这可以通过翻转dxdy值(如果有的话)来完成。

我建议您查看一下:http://www.petercollingridge.co.uk/pygame-physics-simulation/boundaries

看看他如何将球精灵移回框中,如果它超出边界,并反转行进方向。

希望它有所帮助。