c ++阻止敌人精灵互相移动

时间:2014-04-27 16:23:38

标签: c++

我正在制作一个2D游戏,我试图阻止敌人的精灵们互相移动。我已经实现了以下方法,该方法应该检查敌人是否重叠,然后将其中一个移回他们来的方向。然而,这种方法似乎使我的游戏崩溃,因为只有一个敌人被渲染。

这是我的检查方法:

size = enemys.size();
for (int i = 0; i<size; i++){
    double x = enemys[i].getEnemyX();
    double y = enemys[i].getEnemyY();
    for (int s = 1; s<size; s++){
        double enemyX = enemys[s].getEnemyX();
        double enemyY = enemys[s].getEnemyY();
        if (x >= enemyX-5.0 && x <= enemyX+5.0 && y >= enemyY-5.0 &&  y <= enemyY + 5.0){
            double xDir = x - enemyX;
            double yDir = y - enemyY;
            double hyp = sqrt(xDir*xDir + yDir*yDir);
            xDir /= hyp;
            yDir /= hyp;
            x -= xDir * 5;
            y -= yDir * 5;
            enemys[s].setEnemyCoord(x,y);
        }
    }
}*

1 个答案:

答案 0 :(得分:1)

您的代码最终会检查每个敌人。 让你的内循环从s=i+1

开始