官术网_书友最值得收藏!

Setting things into motion

We'll need to move the castle and the silhouettes to create an illusion of the dragon flying. We do this by updating their position after every tick, as shown here:

FairytaleManager.prototype.update = function() {
  this.updateCastle();
  this.updateSilhouette();
};

The update function will be called from the parent layer (MainMenu or GameWorld) on every tick. It is here that you will have to move your castle and the backdrop. The updateCastle and updateSilhouette functions are identical, so I will discuss the updateCastle function only:

FairytaleManager.prototype.updateCastle = function(){
  for(var i = 0; i < this.castleSprites.length; ++i)
  {
    // first update the position based on the scroll speed
    var castleSprite = this.castleSprites[i];
    castleSprite.setPosition(castleSprite.getPositionX() - MAX_SCROLLING_SPEED, castleSprite.getPositionY());

    // check if the sprite has gone completely out of the left edge of the screen
    if(castleSprite.getPositionX() < (this.castleSpriteSize.width * -0.5))
    {
      // reposition it after the last wall sprite
      var positionX = this.castleSprites[this.lastCastleIndex].getPositionX() + this.castleSpriteSize.width - MAX_SCROLLING_SPEED;
      castleSprite.setPosition(positionX, castleSprite.getPositionY());
      // this sprite now becomes the new last wall
      this.lastCastleIndex = i;
    }
  }
};

We loop through each sprite of the castle and shift them left by MAX_SCROLLING_SPEED pixels. Subsequently, we need to check if a castle sprite has gone completely out of the left edge of the screen. If it has, we need to reposition it at the right end of the screen, next to the sprite that is currently at the end. We already have a variable named lastCastleIndex that tells us that. After placing this sprite at the end, we also need to update the lastCastleIndex variable. It is worth noting that the updateSilhouette function scrolls the silhouette sprites at half the value of MAX_SCROLLING_SPEED. This is how we will create a perception of depth or parallax.

We achieved the illusion of an infinitely long castle. Okay, you can go ahead and tell the dragon about it now. It's time to start playing the game anyway.

主站蜘蛛池模板: 高邑县| 彭泽县| 梨树县| 化德县| 宜州市| 蒲城县| 琼中| 调兵山市| 林口县| 金门县| 闵行区| 东宁县| 志丹县| 涪陵区| 新野县| 光泽县| 金寨县| 徐闻县| 荆州市| 枞阳县| 宽城| 宁强县| 嵊泗县| 武山县| 全州县| 乌审旗| 黔江区| 文化| 诸城市| 德惠市| 涟源市| 遵化市| 贺兰县| 兰西县| 平泉县| 康平县| 朝阳市| 十堰市| 和田市| 微博| 五寨县|