繁体   English   中英

pygame虚假的精灵碰撞

[英]Pygame false sprite collisions

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

我努力了:

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

那是因为pygame每秒运行数百次主循环。 因此,您可能会认为这是一次简单的碰撞然后越过,那么每次您的玩家越过敌人时,口译员都会将其解释为命中,因此它运行得如此之快,您的敌人/玩家几乎会立即死亡。 为避免此问题,您应该使两个弹起,以便一次仅发生一次碰撞。 这可以通过翻转dxdy值(如果有)来完成。

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

如果球精灵超出边界,请查看他如何将球精灵移回盒子,并反转行进方向。

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM