1
好吧我正在用pygame制作2D滚轮游戏,但想要能够控制何时考虑碰撞。例如,在我的玩家碰撞并死亡后,他在屏幕中间立即重生,问题在于通常会有另一个碰撞物体靠近,从而立即杀死玩家。我想要的是一个小时间段,玩家可以在这段时间内避免碰撞,让它先移动到安全位置,然后继续玩正常的广告。我想也许把重新安置在一个虚拟精灵组中,然后随着时间的推移将它移除并添加到另一个有碰撞的组中。我不知道。Pygame:如何忽略碰撞
好吧我正在用pygame制作2D滚轮游戏,但想要能够控制何时考虑碰撞。例如,在我的玩家碰撞并死亡后,他在屏幕中间立即重生,问题在于通常会有另一个碰撞物体靠近,从而立即杀死玩家。我想要的是一个小时间段,玩家可以在这段时间内避免碰撞,让它先移动到安全位置,然后继续玩正常的广告。我想也许把重新安置在一个虚拟精灵组中,然后随着时间的推移将它移除并添加到另一个有碰撞的组中。我不知道。Pygame:如何忽略碰撞
当玩家死亡时,我会设置一个变量,其中包含您希望它无法忍受的帧数。当你进行碰撞检测时,你可以检查玩家是否有任何遗漏的帧,只有在没有剩余帧的情况下才处理碰撞。
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
感谢哈兹, 的逻辑工作。我把所有的东西都放在我的main()中,因为它只是一个单独的玩家,我所有的碰撞都在main中。我试图去处理它,所以每个玩家都有自己的无敌价值,但当我从main()函数中查看玩家在一个spriteGroup中时,看到它的值是什么时,我无法让它工作。 无论如何,谢谢你的工作! – Aikman007
优秀!如果解决方案为您工作,您是否可以将答案标记为已接受? – Haz