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

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.

主站蜘蛛池模板: 巴东县| 酒泉市| 达孜县| 会同县| 年辖:市辖区| 介休市| 鄂托克旗| 宝应县| 盘锦市| 环江| 灵台县| 青铜峡市| 舟曲县| 惠来县| 大田县| 宽甸| 遂溪县| 永吉县| 惠水县| 饶平县| 松江区| 竹北市| 宁明县| 灵寿县| 新乡市| 正阳县| 沿河| 仙居县| 天水市| 沂源县| 舟曲县| 扶余县| 县级市| 巴楚县| 印江| 阳城县| 林口县| 郎溪县| 宾阳县| 海丰县| 玉龙|