0

您好,我目前正在开发一个平台游戏。当我从一个平台跳到另一个平台时,我遇到了一个奇怪的问题,它工作正常。然而,每当我从一个跳下并撞到另一个的底部时,我的角色精灵就会向上飞出屏幕。我觉得这是由于没有正确编程玩家和平台之间的碰撞,因为我不知道怎么做。这是我目前所做的:

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

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

这是我的完整游戏代码:

http://pastebin.com/cae4u5NR

4

1 回答 1

1

在对图形进行编程时,y 坐标是相反的,因此 y 坐标值在平台下方会更高,而在平台上方会更低。

您当前的代码会将玩家向上移动到平台内,这将再次激活碰撞并将其推到平台内更远的位置。

你应该说:

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

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

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

我也有这个碰撞检测的例子,我曾经在我自己的面向对象程序中实现了这个方法,但是我丢失了我自己的程序。我不记得谁拥有这个程序,因为我很久以前就发现了它,我希望它会帮助你从我所说的中看到一种公平的做法。

于 2013-10-27T19:20:42.130 回答