Cocos Creator 日記項目實戰FlyBird

Cocos 筆記 項目實戰(FlyBird)

學習知識點:

提供github下載地址: https://github.com/Noying/FlayBird

素材百度網盤:https://pan.baidu.com/s/1uU5daqfghqvjD_ADHIdKzw


碰撞組件及碰撞事件


例如,水管的碰撞組件,只需要先將水管大小設置好,然後添加組件,選擇

就可以了,會自動的佈滿精靈。

事件處理,如我得飛鳥,如下:

主要是勾好 第一個選項Enabled Contact Listened,獲得碰撞事件,然後再飛鳥上的腳步Player.js 上添加函數:

    onCollisionEnter: function (other, self) {
        switch(other.tag){
            case 1:
                this.game.gameOver();
                break;
            case 2:
                 this.score++;
                 cc.log("score is "+this.score);
                 this.game.setScoreText(this.score);
                 break;
            default:
                 break;
        }
    
    },

官網資料:碰撞組件及碰撞回調

數據存儲

我這個遊戲主要是存儲,鳥飛過獲得最高分,因此我只有一個存儲

    saveScore:function(){ //保存數據
        var maxScore = JSON.parse(cc.sys.localStorage.getItem('Score'));
        if(!maxScore)maxScore=0;
        if(this.score>=maxScore){
            cc.sys.localStorage.setItem('Score', this.score);
        }
    }
 onLoad () { //本來這裏還想做個列表,然後排序,最高分和最低分之類的
        cc.director.preloadScene("menuSence");
        var maxScore = JSON.parse(cc.sys.localStorage.getItem('Score'));
        if(!maxScore)maxScore=0;
         this.score.getComponent(cc.Label).string = "Score: "+maxScore; //這裏也必須熟悉
         this.backBtn.getComponent(cc.Button).node.on(cc.Node.EventType.TOUCH_END,this.GoBack,this);
     }

官網資料: 數據存儲和數據讀取

控件動畫

我得動畫主要是用在兩個背景之間的切換了,代碼如下:

  setMoveAction:function(){
        var fristAction = cc.moveBy(15,-640,0);
        var secondAction = cc.moveBy(0.1,1280,0);
        var retAction = cc.repeatForever(cc.sequence(fristAction,secondAction,fristAction));
        if(this.node.x==0){
            retAction = cc.repeatForever(cc.sequence(fristAction,secondAction,fristAction));
        }else if(this.node.x==640){
            retAction = cc.repeatForever(cc.sequence(fristAction,fristAction,secondAction));
        }
        return retAction;
    }

背景滾動處理

爲了使背景顯得在滾動,可以在背後,我認爲可以使你得攝像頭跟着走,或者你得背景自己移動,我這裏是兩個背景進行銜接,不停的運動,如圖:

兩塊,可以銜接的圖片不停的運動,當然這樣的圖片如何製作,我將在我得PS心得中分享

得分處理

因爲,FlyBird是通過水管而計分的,我這裏不想使用代碼去判斷座標而去計分,所以我用了一個透明的,跨越了整個豎着的屏幕的,寬爲1,長爲屏幕長度的透明碰撞組件放置在水管的後方,這樣,只要飛鳥經過了這個碰撞組件就可以計分。

如何label控件顯示字

這個也是從網上查到,不管是Prefab還是腳本自己的屬性控件,要想修改上面的字符串都得如下處理

 this.score.getComponent(cc.Label).string = "Score: "+maxScore; //這裏也必須熟悉
    var label = cc.instantiate(this.startLabel);
            this.node.addChild(label);
            label.getComponent(cc.Label).string = time; //這個是個需要記住的地方

聲音播放

cc.audioEngine.playEffect(this.hitAudio, false);

官方資料: 音頻播放

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章