2013-10-27 36 views
0

您好,我目前正在一边on-platformer。 当我从一个平台跳到另一个平台时,我遇到了一个奇怪的问题,它工作正常。然而,无论何时我从一个跳转到另一个的底部,我的角色精灵都会向上飞出屏幕。我觉得这是因为没有正确编程玩家和平台之间的碰撞,因为我不知道如何。继承人什么香港专业教育学院在此刻完成:奇怪的b​​ug在pygame

collide = pygame.sprite.spritecollide(player, platform_list, False) 
    if collide: 
     player.rect.y-=1 

如果任何人都可以提出供玩家和平台,请说出来,谢谢之间的碰撞检测一种更好的方式。 不知怎么这个漏洞可以让玩家拿过去,我已经设置了4个角的屏幕(322线和212)的屏幕边界,但是这些障碍通常

我的继承人完整的游戏代码:

http://pastebin.com/cae4u5NR

回答

1

当编程的东西图形化的y坐标反转,因此y坐标值将超过平台平台下的高和低。

您当前的代码将移动玩家了这将再次激活的碰撞,甚至进一步推它的平台内的平台内。

而应该说:

collide = pygame.sprite.spritecollide(player, platform_list, False) 
    if collide: 
     player.rect.y += 1 

这里的东西要注意的是从改变 “ - = 1” 到 “+ = 1”。

这将使玩家精灵,而不是移动的平台里面去上下。

我也有碰撞检测撒谎this例子,我实现了方法到我自己的面向对象的程序一次,但我失去了自己的计划。我不记得很久以前我发现这个程序是谁的,我希望它能帮助你从我所说的公平的方式中看到。

+0

那么你如何区分平台的四个角落之间的碰撞,因为肯定你会需要不同的角落不同的结果。 – user2921888

+0

@ user2921888 你检查什么方向不同的对象正在移动,这也是它在我链接的代码。平台不动,但它正在检查球员的方向,并将采取行动。 – Reindeernix

+0

好,我觉得它的工作,但这样做,我的跳跃已经全部怪异后: 如果event.type == pygame.KEYDOWN: 如果发生碰撞,event.key == pygame._UP: player.change_y - = 5 如果player.change_y == 7: player.change_y = False 正在使角色向上跳出屏幕 – user2921888