我在libgdx中有一个2d游戏,我的游戏理念就像防御游戏一样,英雄会出现在游戏屏幕的左边,敌人会出现在右边。
问题:敌人阵列中的所有敌人除了英雄阵列中的最后一个英雄外都不关心英雄,并且在英雄阵列中通过所有英雄直到最后一个英雄,然后他们关心最后一个英雄!,因为英雄是相同的情况,他们不关心除了最后一个敌人之外的所有敌人。怎么啦?
private Array<Hero> heroes = new Array<>();
private Array<Enemy> enemies = new Array<>();
.....
public void overlapsDetector() {
for (Hero hero : getHeroes()) {
for (Enemy enemy : getEnemies()) {
if (Intersector.overlaps(hero.getBounds(), enemy.getBounds())) {
enemy.setEntityMode(EntityMode.SLASH);
hero.setEntityMode(EntityMode.SLASH);
enemy.setHealth(enemy.getHealth() - 1f);
hero.setHealth(hero.getHealth() - 1f);
} else {
hero.setEntityMode(EntityMode.WALK);
enemy.setEntityMode(EntityMode.WALK);
}
}
}
}发布于 2020-05-23 22:04:47
问题是你在设置你的英雄和敌人在每一次内循环迭代中都处于斜杠或走动状态。举个例子,如果你让你的英雄砍向第一个敌人,但随后发现它相对于你的最后一个敌人是越界的,那么你就让你的英雄在你不应该行走的时候回到原地。
试试这样的东西。
private Array<Hero> heroes = new Array<>();
private Array<Enemy> enemies = new Array<>();
.....
public void overlapsDetector() {
for (Enemy enemy : getEnemies()) {
enemy.setEntityMode(EntityMode.WALK); //initialise all enemies to walk
}
for (Hero hero : getHeroes()) {
hero.setEntityMode(EntityMode.WALK); //initialise all heros to walk
for (Enemy enemy : getEnemies()) {
if (Intersector.overlaps(hero.getBounds(), enemy.getBounds())) {
enemy.setEntityMode(EntityMode.SLASH);
hero.setEntityMode(EntityMode.SLASH);
enemy.setHealth(enemy.getHealth() - 1f);
hero.setHealth(hero.getHealth() - 1f);
}
//no else
}
}
}https://stackoverflow.com/questions/61949035
复制相似问题