2013-05-20 165 views
3

制作一个基本的游戏和IM试图让我的性格,当空间被挤压使精灵跳跃在Pygame的

我有一个模拟重力,拉下来当空间被释放

跳,但是当我推下跌空间也上升,犯规阻止

我希望它只是咕弥补样1秒,随后倒回去

这里是我的按键处理代码片段:

key = pygame.key.get_pressed() 
if key[pygame.K_LEFT]: 
    self.rect.x -= 30 
if key[pygame.K_RIGHT]: 
    self.rect.x += 30 
if key[pygame.K_SPACE]: 
    self.rect.y += -20 
if key[pygame.K_SPACE] == False: 
    self.rect.y += 20 

像我说的这个代码,当空间被按下时,精灵会上升,当空间被释放,但当它被按下时,我希望它等待一秒,然后让精灵回落,即使空格键是仍然下降

请帮忙!!

谢谢

回答

5

有两件事你应该介绍。状态和速度。

为了让玩家摔倒,我们希望他只在他在地面时才跳。所以我们定义了2个状态。 STANDINGJUMPING。现在按下空格只会让玩家跳跃,如果他的状态是STANDING

为了让玩家像球一样落下,我们引入了velocity。当玩家在地面上时,我们将速度设置为0.当您按空间时,您将速度更改为100. 在每个循环中,如果玩家状态为JUMPING,我们将地球重力减少velocity。 最后要检查的是当玩家到达地面时,您应该将velocity设置为0并将玩家状态设置为STANDING

+0

这是有益的生病试试吧! – Serial

+0

有关他的答案的详细信息:http://gamedev.tutsplus.com/tutorials/implementation/avoid-game-watch-gravity-in-your-characters-jumps/ – ninMonkey