1. 程式人生 > >Cocos creator 遊戲背景迴圈滾動--Javascript編寫

Cocos creator 遊戲背景迴圈滾動--Javascript編寫

Cocos creator 製作遊戲背景迴圈滾動--Javascript編寫

我們知道,在利用觸控的Cocos creator編輯器開發2d橫屏遊戲的時候,經常需要利用背景的移動來模擬主角前進後退等效果。作為小白,在自己完成畢業設計和做一些案例的時候,接觸到了這方面的東西,所以結合其他寫者的方法,加上自己的一些程式碼,分享給需要的人

  • 瞭解原理

簡單來說就是場景中兩張背景圖片交替的在移動,在遊戲的每幀中不斷調整圖片的位置,以實現背景的迴圈滾動效果。

  • 實現步驟  
  • 在編輯器上先新增三個節點,分別命名為backgruond,bg1,bg2,錨點都要設為(0,0)把準備好的圖片拖到bg1和bg2的Sprite Frame處,如下圖放置在場景中。

  • 編寫程式碼實現
  • cc.Class({
        extends: cc.Component,
    
        properties: {
           far_bg:[cc.Node],
           far_speed:0.2,
        },
    
       onLoad :function() {
           this.fixBgPos(this.far_bg[0],this.far_bg[1]);
       },
    
       fixBgPos:function(bg1,bg2){
           bg1.x = 0;
           //利用前一張圖片的邊框大小設定下一張圖片的位置
           var bg1BoundingBox = bg1.getBoundingBox();
           bg2.setPosition(bg1BoundingBox.xMin,bg1BoundingBox.yMax)
       },
    
       update:function(dt){
           this.bgMove(this.far_bg,this.far_speed);
           this.checkBgReset(this.far_bg);
       },
    
       bgMove:function(bgList,speed){
           for(var index = 0; index < bgList.length; index++){
               var element = bgList[index];
               element.y -= speed;
           }
    
       },
    
       //檢查是否要重置位置
        checkBgReset:function(bgList){
            var winSize = cc.director.getWinSize();
            var first_yMax = bgList[0].getBoundingBox().yMax;
            if(first_yMax<=0){
                var preFirstBg = bgList.shift();
                bgList.push(preFirstBg);
                var curFirstBg = bgList[0];
                preFirstBg.y = curFirstBg.getBoundingBox().yMax;
            }
        }
        
    });
    

    最終效果:圖片移動不出現漏洞