@eydeveloper

Как сделать, чтобы количество врагов увеличивалось?

Есть функция Enemy (генератор врагов), нужно сделать так, чтобы при вызове enemy.createEnemy координаты менялись с помощью функции enemySpaw. Но получается так, что все время один враг на экране, только меняет свои координаты. Возможно я неправильно создаю объект enemy.

setInterval(spawnEnemies, 1000); // при определенном действии начинается генерация врагов
...
function Enemy() {
  enemySpawn = (min, max) => {
    return Math.floor(Math.random() * (max - min) + min);
  }
  this.enemy = {
    sprite: document.getElementById("enemy").style,
    anim: document.getElementById("enemy-sprite"),
    y: 58,
    w: 146,
    h: 206
  }; 
this.createEnemy = () => {
    this.enemy.sprite.display = "inline";
    this.enemy.sprite.position = "absolute";
    this.enemy.sprite.top = 58 + "vh";
    this.enemy.sprite.width = enemy.w + "px";
    this.enemy.sprite.height = enemy.h + "px";
    this.enemy.sprite.left = enemySpawn(centerPosition, document.documentElement.clientWidth - this.enemy.w) + "px";
  }
}
function spawnEnemies() {
  var enemy = new Enemy();
  for (var i = 0; i < 1; i++) {
    enemy.createEnemy();
  }
}
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
В spawnEnemies() вы создаёте одно врага и дальше в цикле вызываете для него createEnemy(), но это один и тот же объект врага, а вы просто меняете ему координаты каждый раз, обращаясь к this.

В цикле у вас всего одна итерация.

enemySpawn у вас глобальная функция. Нужно либо this.enemySpawn, либо вынести её за пределы Enemy, чтобы не пересоздавать каждый раз.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
28 мар. 2024, в 21:25
2000 руб./за проект
28 мар. 2024, в 21:17
5000 руб./за проект
28 мар. 2024, в 20:46
150000 руб./за проект