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

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.

主站蜘蛛池模板: 英山县| 宁武县| 贡觉县| 道真| 荣成市| 黑龙江省| 临洮县| 苏尼特右旗| 子洲县| 宜宾市| 托克托县| 水富县| 天津市| 通海县| 聊城市| 贡嘎县| 正定县| 洮南市| 武夷山市| 十堰市| 武胜县| 错那县| 尼木县| 合川市| 天水市| 杭州市| 宁陵县| 武宁县| 龙江县| 太谷县| 田阳县| 团风县| 汝南县| 农安县| 通道| 望谟县| 即墨市| 青海省| 葵青区| 济源市| 乌拉特前旗|