我會做這個簡短。在側面滾動遊戲中,我有一個用戶控制的精靈和一個用作地形的精靈。環境小精靈級別在理論上可以是地板,天花板或牆壁,具體取決於它的位置以及玩家與之碰撞的方向,需要做一件事:擊退玩家。Pygame - 防止雪碧重疊
如果玩家與環境精靈的頂部發生碰撞,玩家將停留在頂部邊框上。如果玩家跳躍並與環境精靈的底部發生碰撞,他們會停止向上移動並開始下降。邏輯權利?
我找不出來。我的第一個解決方案希望說明我的問題(而不是實際的代碼,只是問題區域):
if player.rect.bottom > environment.rect.top:
player.rect.bottom = environment.rect.top - 1
if player.rect.top < environment.rect.bottom:
player.rect.top = environment.rect.bottom + 1
if player.rect.right > environment.rect.left:
etc.
etc.
etc.
這正常一些的時間,但在拐角處得到真正狡猾becase的超過1px的每一個重疊意味着兩個或兩個以上玩家的雙方實際上是一次碰撞環境精靈。簡而言之,這是我嘗試過的每個解決方案都面臨的問題。
我已經潛伏了每一個線程,教程,視頻,博客,指南,常見問題和幫助網站我可以合理甚至無理地在谷歌上找到,我不知道。這肯定是有人以前提到過的 - 我知道,我已經看到了。我正在尋找建議,可能是一個鏈接,只是任何事情來幫助我克服我只能假設的一個簡單的解決方案,我找不到。
你如何重新計算任何方向的碰撞精靈的位置?
獎勵:我也實施了重力 - 或者至少有一個接近恆定的向下的力量。如果它很重要。