繁体   English   中英

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

[英]c++ Stop Enemy Sprites Moving Over Each Other

我正在制作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);
        }
    }
}*

您的代码最终将针对每个敌人检查自己。 使您的内循环从s=i+1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM