2013-10-27 71 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