Задать вопрос
@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();
  }
}
  • Вопрос задан
  • 140 просмотров
Подписаться Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
В spawnEnemies() вы создаёте одно врага и дальше в цикле вызываете для него createEnemy(), но это один и тот же объект врага, а вы просто меняете ему координаты каждый раз, обращаясь к this.

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

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

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

Похожие вопросы