cocos creator制作一个小游戏【飞机大战】

简介:飞机大战是很多人的童年的回忆, 也是许多学习cocos creator的学习者做的第一个完整的游戏, 下面就看一看这个飞机大战是如何做的

首先还是看一看场景的层级结构图 

以及mian结点上的脚本组件 

cc.Class({

extends: cc.Component,

properties:()=>({

pause: cc.Button,

btnSprite: {

default: [],

type: cc.SpriteFrame,

tooltip:'暂停按钮不同状态的图片',

},

bomb: cc.Node,

gameMusic: {

default:null,

type: cc.AudioSource

},

useBombClip: cc.AudioClip,

enemyGroup: {

default:null,

type:require('enemyGroup'),

},

hero: {

default:null,

type:require('hero'),

},

ufoGroup: {

default:null,

type:require('ufoGroup'),

},

bulletGroup: {

default:null,

type:require('bulletGroup'),

},

scoreDisplay:cc.Label,

bombNoDisplay:cc.Label,

}),

// use this for initialization

onLoad:function(){

this.score =0;

this.bombNo =0;

this.scoreDisplay.string =this.score;

this.bombNoDisplay.string =this.bombNo;

this.eState = D.commonInfo.gameState.start;

this.enemyGroup.startAction();

this.bulletGroup.startAction();

this.ufoGroup.startAction();

this.bomb.on('touchstart',this.bombOnclick,this);

this.gameMusic.play();

},

bombOnclick:function(){

varbombNoLabel =this.bomb.getChildByName('bombNo').getComponent(cc.Label);

varbombNo =parseInt(bombNoLabel.string);

if(bombNo>0){

bombNoLabel.string = bombNo-1;

this.removeEnemy();

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

}else{

console.log('没有子弹');

}

},

// called every frame, uncomment this function to activate update callback

//update: function (dt) {

//},

//暂停按钮点击事件 

pauseClick:function(){//暂停 继续

if(this.eState == D.commonInfo.gameState.pause){

this.resumeAction();

this.eState = D.commonInfo.gameState.start;

}elseif(this.eState == D.commonInfo.gameState.start) {

this.pauseAction();

this.eState = D.commonInfo.gameState.pause;

}

},

//游戏继续

resumeAction:function(){

this.enemyGroup.resumeAction();

this.bulletGroup.resumeAction();

this.ufoGroup.resumeAction();

this.hero.onDrag();

this.gameMusic.resume();

this.pause.normalSprite =this.btnSprite[0];

this.pause.pressedSprite =this.btnSprite[1];

this.pause.hoverSprite =this.btnSprite[1];

},

//游戏暂停

pauseAction:function(){

this.enemyGroup.pauseAction();

this.bulletGroup.pauseAction();

this.hero.offDrag();

this.gameMusic.pause();

this.ufoGroup.pauseAction();

this.pause.normalSprite =this.btnSprite[2];

this.pause.pressedSprite =this.btnSprite[3];

this.pause.hoverSprite =this.btnSprite[3];

},

//增加分数

gainScore:function(scoreno){

this.score += scoreno;

//更新 scoreDisplay Label 的文字

this.scoreDisplay.string =this.score.toString();

},

//get分数

getScore:function(){

returnparseInt(this.scoreDisplay.string);

},

//分数写到本地( 当前分 最高分 历史记录)

updateScore:function(){

varcurrentScore =this.scoreDisplay.string;

varscoreData = {

'score':currentScore,

'time': D.common.timeFmt(newDate(),'yyyy-MM-dd hh:mm:ss'),

};

varpreData = cc.sys.localStorage.getItem('score');

varpreTopScore = cc.sys.localStorage.getItem('topScore');

if(!preTopScore ||parseInt(preTopScore)

cc.sys.localStorage.setItem('topScore', currentScore);

}

if(!preData){

preData = [];

preData.unshift(scoreData);

}else{

preData =JSON.parse(preData);

if(!(preDatainstanceofArray)){

preData = [];

}

preData.unshift(scoreData);

}

cc.sys.localStorage.setItem('currentScore', currentScore);

cc.sys.localStorage.setItem('score',JSON.stringify(preData));

},

//炸弹清除敌机

removeEnemy:function(){

this.enemyGroup.node.removeAllChildren();

},

//接到炸弹

getUfoBomb:function(){

if(parseInt(this.bombNoDisplay.string)<3){//多于三个炸弹就不累加

this.bombNoDisplay.string +=1;

}

},

//游戏结束

gameOver:function(){

this.pauseAction();

this.updateScore();

cc.director.loadScene('end');

},

});

以及资源 

这个游戏的视频教程关注后回复“飞机大战”可以领取点击链接加入群聊【cocos/unity交流群】

推荐阅读更多精彩内容