我有一個AABB衝突解決的問題。
我通過先解析X軸然後解析Y軸來解析AABB相交。 這樣做是爲了防止這種錯誤:當一個物體移動到玩家與玩家必須水平推http://i.stack.imgur.com/NLg4j.png
目前的方法,工作正常。正如您在.gif中看到的那樣,水平尖峯可以正確推動播放器。
但是,當垂直尖刺進入播放器時,X軸仍然會先解析出來。這使得「使用尖峯作爲電梯」是不可能的。
當玩家移動到垂直尖峯(受重力影響落入)時,他被推向Y軸,因爲X軸沒有重疊開始。
我試過的東西是在first answer of this link中描述的方法。 然而尖峯和移動物體的位置發生了變化,而不是速度,我不計算它們的下一個預測位置,直到它們的Update()方法被調用。 不用說這個解決方案也沒有效果。 :(
,我需要解決AABB碰撞中,兩個以上的工作描述的情況下按預期的方式
這是我目前衝突的源代碼。http://pastebin.com/MiCi3nA1
我會真的很感謝有人可以研究這個問題,因爲這個bug從一開始就一直存在於引擎中,我一直在努力尋找一個好的解決方案,但沒有取得任何成功。在碰撞代碼,並阻止我進入「有趣的部分」和編碼的遊戲邏輯:(
我試着實施與XNA AppHub平臺遊戲演示中相同的碰撞系統(通過複製粘貼大部分內容)。然而,「跳躍」錯誤發生在我的遊戲中,而它在AppHub演示中不會發生。 [跳躍bug:http://i.stack.imgur.com/NLg4j.png]
要跳轉我檢查玩家是否在「onGround」,然後加-5到Velocity.Y。
由於玩家的Velocity.X高於Velocity.Y(參考圖中的第四個面板),因此onGround在不應該時設置爲true,從而讓玩家在空中跳躍。
我相信這不會發生在AppHub演示中,因爲播放器的Velocity.X永遠不會比Velocity.Y更高,但我可能會誤解。
我之前解決了這個問題,先在X軸上解析,然後在Y軸上解析。但是,正如我上面所說的那樣,這會阻止與尖峯的碰撞。
僅供參考這裏是gamedev.stackexchange.com上的相同問題 - 它有更多的答案:http://gamedev.stackexchange.com/questions/14486/2d-platformer-aabb-collision-problems?lq=1 – LearnCocos2D