我試圖用兩個使用圖形包構造的矩形來實現2D碰撞檢測。 不幸的是,我開始認爲我不明白編寫一個處理這個問題的函數所需的邏輯。C++ 2D多邊形碰撞檢測
下面是我的代碼,它繪製了一個小精靈和其他幾個矩形。我的精靈隨着鍵盤輸入而移動。
我已經使用了幾本書,也嘗試過像Nehe等網站,雖然它們是非常好的教程,但它們似乎只是直接處理3D碰撞。
有人可以告訴我一個有效的方法來實現碰撞檢測使用我上面的矩形?我知道你需要比較每個對象的座標。我只是不確定如何跟蹤對象的位置,檢查碰撞並在碰撞時停止移動。
我是自學的,現在似乎已經停了幾天。我完全沒有想法,並且搜索了更多的谷歌網頁,而不是我想要記住的。我很抱歉我的天真。
我會很感激任何有建設性的意見和示例代碼。謝謝。
void drawSprite (RECT rect){
glBegin(GL_QUADS);
glColor3f(0.2f, 0.2f, 0.2f);
glVertex3f(rect.x, rect.y, 0.0);
glColor3f(1.0f, 1.0f, 1.0f);
glVertex3f(rect.x, rect.y+rect.h, 0.0);
glColor3f(0.2f, 0.2f, 0.2f);
glVertex3f(rect.x+rect.w, rect.y+rect.h, 0.0);
glColor3f(1.0f, 1.0f, 1.0f);
glVertex3f(rect.x+rect.w, rect.y, 0.0);
glEnd();
}
void drawPlatform (RECT rect){
glBegin(GL_QUADS);
glColor3f(0.2f,0.2f,0.0f);
glVertex3f(rect.x, rect.y, 0.0);
glColor3f(1.0f,1.0f,0.0f);
glVertex3f(rect.x, rect.y+rect.h, 0.0);
glColor3f(0.2f, 0.2f, 0.0f);
glVertex3f(rect.x+rect.w, rect.y+rect.h, 0.0);
glColor3f(1.0f, 1.0f, 0.0f);
glVertex3f(rect.x+rect.w, rect.y, 0.0);
glEnd();
}
在網上搜索「2D碰撞檢測」會帶來很多教程。你能描述一下爲什麼這些不適合你? – 2013-03-20 14:03:22
我猜是因爲我不理解他們。也許我讀了太多,讓自己感到困惑。我認爲我出錯的地方是我不是100%確定如何跟蹤精靈的當前位置,因此我認爲我總是比較精靈的起源x/y,當然這些精靈始終會返回爲假碰撞... – Reanimation 2013-03-20 14:12:43
您可能需要將您的問題細化爲您正在嘗試的特定「第一步」。也許跟蹤位置。如果教程只會讓你感到困惑,那麼請求另一個教程可能不會有幫助。 – 2013-03-20 14:18:39