0
我一直在用awt和slick2d混合製作遊戲(渲染是通過awt完成的)。無論如何,我遇到碰撞問題。裏面的實體類的,我有一個碰撞方法:。交互總是返回true?
public boolean colidesWithWall(int idx, int idy) {
//if(Level.solid)
wall = new Rectangle(idx, idy, Tile.Size, Tile.Size);
if (this.getBoundingBox() == null) {
return false;
}
return this.getBoundingBox().intersects(wall);
}
這在我的「Core.java」文件之外,我必須通過colidesWithWall法for循環迭代的瓷磚。我在這裏也有if語句,所以它只會檢查碰撞圖層上的圖塊。 (我的地圖有四層,背景,碰撞,物品和敵人)。
for (int i = 0; i < entities.size(); i++) {
Entity me = entities.get(i);
for (int k = 0; k < 100; k++) {
for (int l = 0; l < 100; l++) {
if (Level.getColision(k, l)) {
Entity entity = entities.get(i);
if (entity.colidesWithWall(k, l)) {
entity.collidedWithWall();
frameCounter = 0;
}
}
}
}
}
好吧,無論如何,遊戲會發生,遊戲始終會檢測到正在發生的碰撞。此外,玩家X & Y座標在此定義:
((int) ((rouge.screenSize.width)/2 - Tile.Size/2 + rouge.oX))/Tile.Size, ((int((rouge.screenSize.height)/2 - Tile.Size/2 + rouge.oY))/Tile.size
rouge.oY和rouge.oX是我的相機偏移
Tile.Size是我瓷磚的大小:32
這裏有一個屏幕截圖:http://i.imgur.com/zYONBOC.png
灰色的瓷磚和樹應該是造成碰撞,在那裏作爲棕色的不是。
與問題無關,但當您有一個名爲'Enemy'的類時,爲什麼在'getEnemyPosX()'這樣的函數中使用重複的單詞。閱讀'e.getPosX()'不會更容易'' – vikingmaster
這是一個剩餘的名字,它最初在另一個類中。 – Djulio