2015-03-13 38 views
0

在基於迷宮的Java遊戲中實現碰撞檢測的最簡單方法是什麼?這可能是障礙,但我認爲可能有更好的辦法。這是我目前的代碼:如何在Java中進行衝突?

package asa.game.main.tile; 
import asa.game.main.gfx.Assets; 

public class Wall extends Tile{ 

    public Wall(int id) { 
     super(Assets.wall_one, id); 
    } 

} 
+0

如果它使用的是精靈,我會建議一個isOverlapping函數來檢查此對象的x1,x2和y1,y2以及isOverlapping(otherObject)中的對象。 – avk 2015-03-13 18:30:29

回答

0

首先,我會建議創建一個更新線程來調用碰撞檢測功能。根據不同的形狀和播放器的大小,你可以做

wall.getBounds()。含有(component.getX(),component.getY())

這樣,如果你使用的是工作Swing API(JComponents,JPanels等)

另外,如果你使用這個,你將需要做一些涉及組件大小的數學運算,因爲組件的x和y值是最高的每個的左角。

如果您沒有使用Swing API,因此做了一些自定義繪畫,有多種檢測遊戲對象之間碰撞的方法。您可以爲每個對象指定半徑或方框(取決於對象的形狀)並編寫自己的碰撞函數。在我個人看來,我會寫as--

這樣的功能保存播放 的COORDS如果玩家的COORDS在牆上 返回到上一COORDS 其他 保存播放

新COORDS

- 這似乎心驚肉跳不會因爲線程正在更新非常頻繁 -

0

既然你說迷宮,有一兩件事你可以做的是定義一個java.awt.Rectangle每個壁部分和你的對象通過迷宮移動。

您可以使用intersects方法來檢查對象是否碰到了任何牆段。