阶段3:某些动画突然停止播放

时间:2019-03-10 05:20:14

标签: javascript animation phaser-framework sprite-sheet

我正在使用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 (the working one)

player spritesheet

title screen spritesheet

编辑添加:

我修复了标题屏幕精灵。那不是小故障,我只是不小心将它封闭在一个if块中,该块取决于游戏是否已经开始。拿出来,一切都很好。但是,精灵行走动画仍然不起作用。还是没主意。

编辑2:

深入研究console.logs之后,我诊断出:

a)程序确实没有循环访问其帧数组中的帧(向左或向右旋转,当前帧仅为0或5,但是如果我在工作的地方签出了先前的提交,它将变为0,1 ,2,3和5,6,7,8)

b)程序可以访问帧数组。又名generateFrameNumbers正在工作。如果我将console.log转到sprite上的getTotalFrames(),然后向左或向右移动,则分别为每个提供4个(应有的情况下分别为1个)。

c)如果我手动设置起始帧,它将改变。它仍然会冻结,但是会根据我在anims.play中将其设置为起点的情况,冻结在直腿和步行腿上。同样,它具有所有框架,只是没有循环。

0 个答案:

没有答案