2013-10-10 50 views
0

我有一個數組,其中包含形狀(矩形),然後是另一個形狀,當它與數組中的形狀碰撞時,我希望它無法通過,所以形狀數組基本上形狀不能通過的一系列牆壁。下面是我當前如何試圖做到這一點(W鍵的例子):帶有形狀的Java基本碰撞邏輯

private boolean CanMove() { 
    for(Shape wall : mazeWalls) { 
     if(character.intersects(wall)) 

      return true; 

    } 
    return false; 
} 

if (keyInput.isKeyDown(keyInput.KEY_W)) { 
     for(int i = 0; i <= MoveSpeed; i++) { 
      char_y--; 
       if(CanMove()) { 
       char_y++; 
       break; 
      } 
     } 
    } 

形狀的排列是非常小的,所以我檢查了一切 - 現在,它會停止,但它會卡住在牆上,無法退出/去任何其他方向。它只是簡單地進入了牆壁。如果有人有這樣做的更好的方式,我使用Slick和LWJGL或我會非常感謝的解決方案。謝謝。

+0

你的'CanMove'方法要麼是錯誤的命名,要麼你返回錯誤的值,因爲如果角色與牆相交,你告訴它返回true,實際上應該是false。上次我檢查你不能移動,如果你面臨一堵牆。 – Vallentin

回答

0

如何做到這一點的常用方法是在它發生之前向前邁進一步,然後決定是否可以移動或不能移動。

所以你模擬你的動作,數相交,如果它是真的,你不會隨着你的角色移動。