pygame中的奇怪错误

时间:2013-10-27 16:32:39

标签: python pygame collision-detection collision

大家好,我目前正在开发平台上。 当我从一个平台跳到另一个平台时,我遇到了一个奇怪的问题。然而,每当我从一个跳到另一个的底部时,我的角色精灵就会向上飞出屏幕。我觉得这是由于没有正确编程播放器和平台之间的碰撞,因为我不知道如何。这是我现在所做的事情:

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

如果有人能提出更好的方法来检测播放器和平台之间的碰撞,请说出来,谢谢。 不知何故,这个错误允许玩家越过我为屏幕的四个角设置的屏幕边界(第322和212行),但这些障碍通常

以下是我的完整游戏代码:

http://pastebin.com/cae4u5NR

1 个答案:

答案 0 :(得分:1)

当编程图形时,y坐标被反转,因此y坐标值在平台下会更高,而在平台上会更低。

您当前的代码会将播放器移动到平台内,这会再次激活碰撞并将其推进平台内。

你应该说:

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

这里需要注意的是从“ - = 1”到“+ = 1”的变化。

这会让玩家精灵向下移动,而不是在平台内向上移动。

我还有this碰撞检测的例子,我将该方法实现到我自己的面向对象程序中,但我已经丢失了自己的程序。我不记得是谁拥有这个程序,因为我很久以前就找到了这个程序,我希望它能帮助你看到我会说的一个公平的方法。