Pygame:如何忽略碰撞

时间:2013-05-22 10:41:13

标签: pygame collision

好的我正在制作带有pygame的2D滚动游戏,但希望能够控制何时考虑碰撞。例如,在我的玩家碰撞并死亡后,他立即在屏幕中间重新生成,问题是通常会有另一个碰撞物体靠近,它会立即杀死玩家。我想要的是一些小的时间段,在这段时间内,玩家会遇到碰撞,允许它先移动到安全状态,然后继续玩正常的游戏。我想也许可能将重生的人放在一个假的精灵组中然后随着时间的推移删除并将其添加到另一个有碰撞的组。我真的不知道。

1 个答案:

答案 0 :(得分:0)

当玩家死亡时,我会设置一个变量,其中包含你想让它无懈可击的帧数。当您进行碰撞检测时,您可以检查玩家是否有任何无敌框架,并且只在没有框架时处理碰撞。

def kill_player(player):
    # handle moving the player after death, anything else you need to do
    # set player invulnerability to 30 frames
    player_invulnerable_frames = 30

if environment_rect.collides(player_rect) and player_invulnerable_frames = 0:
    # perform collision response stuff here

在您的游戏循环中,或者可能是更新功能,如果当前大于零,您可以减少无敌框架的数量

while(running):
    # your game loop stuff
    if player_invulnerable_frames > 0:
        player_invulnerable_frames -= 1