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

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.

主站蜘蛛池模板: 揭西县| 吉首市| 三穗县| 洞口县| 贡觉县| 锡林郭勒盟| 丹寨县| 寿光市| 汤阴县| 城口县| 梅州市| 达尔| 苗栗县| 墨江| 余干县| 济阳县| 长治市| 馆陶县| 麟游县| 峨眉山市| 青川县| 阳新县| 麻城市| 奈曼旗| 斗六市| 昆山市| 左云县| 贵阳市| 土默特左旗| 繁昌县| 清徐县| 方城县| 安图县| 和政县| 平阳县| 时尚| 五指山市| 青浦区| 丽水市| 卓尼县| 化州市|