我正在用Java製作遊戲。玩家和敵人之間的碰撞並不正確。玩家與敵人不能正常工作的衝突
我想要什麼:當它們相撞時,它是遊戲結束,我們需要去遊戲結束面板。相反:敵人跑過玩家,遊戲剛剛開始。
我複製粘貼了一段我的代碼,我真的希望有人能找到我做錯了什麼。
有關更多信息,玩家和敵人可以互相發射子彈,並且碰撞可以發揮作用。玩家和敵人都會發現隨機放置的障礙物。
怎麼做才能當玩家與敵人碰撞:
for(Enemy enemy: enemies){
if (checkCollision(player, enemy)){
player.dead = true;
}
}
我更新的動作進行功能的播放器:
if (!player.dead)
player.redraw();
else
{
spelTimer.stop();
mainVenster.switchPanel(new GameOverPanel(mainVenster));}
功能checkCollision(IDK如果這會有所幫助):
public boolean checkCollision(tanks.Game_Object object1, tanks.Game_Object object2){
double dx = object1.x_pos - object2.x_pos;
double dy = object1.y_pos - object2.y_pos;
double distance = (dx*dx) + (dy*dy);
double minDistance = (object1.r+object2.r);
return (distance < minDistance*minDistance);
}
編輯:x_pos和y_pos是我的對象的中心座標,r是ra DIUS。
這是可能的幀速率不夠高而即使子彈*看起來*像它的交叉播放器,程序只看到之前的幀與幀後。您可能想要嘗試將閾值minDistance提高到兩倍,並查看事情的工作方式。 – bcr
你是如何更新座標的? – haifzhan
@bcr我會試着去看看給出了什麼。但我必須說,當我(玩家)在敵人或障礙物上射擊(我擊中他們)時,他們會被移除。 – ml20