我有一個2D OpenGL的遊戲,我想實現在AABB碰撞檢測這裏是碰撞檢測代碼:OpenGL的2D碰撞檢測工作不
boolean collisionX = position.x + size.x + dx >= collision.position.x && collision.position.x + collision.size.x >= position.x + dx;
boolean collisionY = position.y + size.y + dy >= collision.position.y && collision.position.y + collision.size.y >= position.y + dy;
return collisionX && collisionY;
對於大小我使用這種計算,因爲其中一些精靈來自紋理地圖集。
size.x = pixelWidth * scaleX/modelTexture.spriteWidth,
size.y = pixelHeight * scaleY/modelTexture.spriteWidth
我使用modelTexture.spriteWidth兩個因爲紋理地圖的高度和寬度是相同的,因爲它是一個2^x的平方。
PixelWidth和PixelHeight是在紋理圖像,通過我的計數的像素大小。
我認爲這個問題可能是因爲這些計算結果,如果他們錯了。請告訴我。
但是,碰撞檢測似乎發生在錯誤的地方,就好像每個精靈的邊界框從中心開始並向右上方延伸。我試圖用一個等於-size/2f的位移矢量來解釋這個。但不幸的是它沒有改變任何東西。
下面是一個衝突,不出現的例子被正確神韻::
你認爲問題可能出在精靈/對象的由來?以中心爲中心。如果是這樣,我會如何將原點設置在左上角?
嘗試默認的方法之一,例如'布爾相交=新的Rectangle(X1,Y1,寬度1,height1).intersects(新的Rectangle(x2,y2,寬2,身高2));從''java.awt'並看到如何繼續下去 –
如果您需要縮放大小,你可能不得不相應擴大職位? –
'position.x + size.x + dx> = collision.position.x && collision.position.x + collision.size.x> = position.x + dx;'這裏不應該是'||' ? (與y相同)只是直覺閱讀代碼,我沒有做數學 – Zouch