Phaser 3: некоторые анимации перестали воспроизводиться внезапно - PullRequest
0 голосов
/ 10 марта 2019

Я использую Phaser 3.11

У меня есть анимация для моего спрайта (анимация ходьбы), а также анимированный заголовок, который отображается, чтобы побудить игрока нажать (только хитрость, поэтому убедитесь, что звук будет воспроизводиться правильно). У меня также есть анимация для кошки, машущей хвостом.

Все три работали нормально на протяжении всего проекта. Но внезапно, после того, как я добавил новый спрайт, 2/3 вышеперечисленных анимаций перестали работать (цикл ходьбы и заголовок). Кошачий хвост все еще оживляет, странно. Я, конечно, вернул старый спрайт обратно, потому что это единственное, что я изменил, но нет, эта ошибка кажется постоянной.

код ниже:

в преднагрузке:

this.load.spritesheet('dude', 'assets/runner/kel2.png', {
    frameWidth: 16,
    frameHeight: 28,
  });
  this.load.spritesheet('buffy', 'assets/runner/buffy.png', {
    frameWidth: 43,
    frameHeight: 32,
  });
  this.load.spritesheet('startText', 'assets/runner/clickToStart2.png', {
    frameWidth: 351,
    frameHeight: 250,
  });

в создании:

player = this.physics.add.sprite(playerStart, 260, 'dude').setScale(1.3)

this.anims.create({
    //animations created are available globally, belonging to the game objects themselves!
    key: 'left',
    frames: this.anims.generateFrameNumbers('dude', { start: 0, end: 3 }),
    frameRate: 10,
    repeat: -1,
    //use frames 0,1,2,3 at 10 fps, and -1 repeat tells it to loop
  });

  this.anims.create({
    key: 'turn',
    frames: [{ key: 'dude', frame: 4 }],
    frameRate: 20,
  });

  this.anims.create({
    key: 'right',
    frames: this.anims.generateFrameNumbers('dude', { start: 5, end: 8 }),
    frameRate: 10,
    repeat: -1,
  });


buffy = this.physics.add.sprite(3170, 270, 'buffy');
  this.anims.create({
    key: 'curl',
    frames: this.anims.generateFrameNumbers('buffy', { start: 0, end: 1 }),
    frameRate: 2,
    repeat: -1,
  });


startText = this.physics.add.staticSprite(240, 150, 'startText');
  this.anims.create({
    key: 'clickToStart',
    frames: this.anims.generateFrameNumbers('startText', { start: 0, end: 1 }),
    frameRate: 2,
    repeat: -1,
  });

в обновлении:

if (cursors.left.isDown) {
      player.setVelocityX(-100);
      player.anims.play('left', true);
    } else if (cursors.right.isDown) {
      player.setVelocityX(100);
      player.anims.play('right', true);
    } else {
      player.setVelocityX(0);
      player.anims.play('turn');
    }

    buffy.anims.play('curl', true);
    startText.anims.play('clickToStart', true);

опять же, вторая до последней вещи в обновлении (buffy.anims.play) работает нормально Все остальное, однако, застрял на одном кадре. Кто-нибудь когда-либо сталкивался с чем-то подобным? Я гуглю уже больше часа, но безрезультатно.

спрайт-лист cat (рабочий)

спрайт-лист игрока

титульный экран spritesheet

РЕДАКТИРОВАТЬ ДОБАВИТЬ:

Я исправил спрайт титульного экрана. Это был не глюк, я просто случайно заключил его в блок if, который зависел от того, началась ли игра еще. Вытащил, все хорошо сейчас. НО анимация прохождения спрайта все еще не работает. По-прежнему нет идей.

РЕДАКТИРОВАТЬ 2:

После некоторых копаний с console.logs я поставил диагноз:

a) программа действительно НЕ циклически повторяет кадры в своем массиве кадров (поворачивая влево или вправо, текущий кадр равен 0 или 5, но если я извлекаю предыдущий коммит, где он работал, он идет 0,1 2,3 и 5,6,7,8 соответственно)

б) У программы есть ДОСТУП к массиву кадров. он же генерирует номера кадров работает. если я консолью.log для getTotalFrames () на спрайте, а затем перехожу влево или вправо, это дает 4 для каждого соответственно (и 1 для обращенной вперед, как и должно быть).

в) если я вручную установлю начальный кадр, он изменится. Он все еще будет заморожен, но он будет заморожен на прямых ногах по сравнению с шагающими ногами, в зависимости от того, какой кадр я установил в качестве начальной точки в anims.play. Итак, опять же, у него есть все кадры, он просто не зацикливается.

...