我正在用C++和SDL進行一個2D平臺遊戲/格鬥遊戲,我在碰撞檢測方面遇到了一些麻煩。兩個平臺的2D平臺碰撞問題
這些關卡由一系列瓷磚組成,我用一個for循環遍歷每一個(我知道這可能不是最好的方法,我也可能需要幫助)。對於角色的每一側,我將它移動一個像素在這個方向上,並檢查是否有碰撞(我也檢查角色是否朝着這個方向移動)。如果發生碰撞,我將速度設置爲0並將玩家移動到平鋪的邊緣。
我的問題是,如果我先檢查水平碰撞,並且玩家每幀以超過一個像素垂直移動,則它會處理水平碰撞並將角色移動到瓦片的一側,即使瓦片低於(或以上)角色。如果我首先處理垂直碰撞,它會做同樣的事情,除了橫軸。
如何處理兩軸碰撞而不會出現這些問題?有沒有更好的方法來處理碰撞,而不是我怎麼做?
在移動角色之前或在移動然後檢查之後,您是否檢查碰撞? – 2010-04-17 02:47:20
我在移動角色後檢查它。 – ausgat 2010-04-17 13:59:31