我正在用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