2011-12-22 31 views
0

我只是想知道,在java中響應2d瓷磚地圖衝突的最佳方法是什麼?在java中響應瓷磚地圖衝突

我有代碼設置,因此當玩家矩形與矩形(矩形[] [] collRects)的二維數組的一部分的矩形相交時,會發生碰撞。

我知道如何設置它,但是當我運行程序並且玩家與瓦片發生碰撞時,玩家沿着瓦片的邊緣移動並最終穿過碰撞矩形。

我正在應對衝突,現在的方式是:

  1. 我與球員相撞瓷磚的if語句哪邊檢查。
  2. 玩家有一個速度變量,所以我在任何玩家在碰撞前移動的軸上設置了零值。

我猜我想說的是,對碰撞作出反應的最佳方法是什麼?

幫助將不勝感激, 謝謝。

+0

請提供有關您的精靈移動方式的更多細節:他們是否可以在地圖內自由移動?他們是否對齊某種格子(像帕克曼)?你可以同時碰撞多少個精靈? 10? 1000? – 2011-12-22 23:39:13

+0

玩家可以在瓦片地圖上自由移動。 – kocon12 2011-12-23 00:21:39

回答

0

如果我理解正確,似乎你有興趣檢測玩家(精靈)和瓦片(而不是其他自由移動的精靈)之間的碰撞。爲此,一些簡單的模塊化算術應該足以檢測(從玩家的左上角(x,y)座標)哪個瓦片在地圖中碰撞。

假設地圖由NxM的水平矩陣組成,水平編號從0 ... N-1,垂直編號爲0..M-1,平鋪尺寸爲32x32像素,則碰撞平鋪座標( i,j)是:

i = floor(player.x/32);

j = floor(player.y/32);