使用CocosCreator完成水管鸟demo的拓展玩法(不停歇的球)

今天在昨天水管鸟demo的基础上完成了一个拓展demo的玩法,主要是用同样的方法控制小球,然后使用小球去触碰block板,碰到后木板消失,当有没碰到的木板的时候,就游戏结束:

展示:使用CocosCreator完成水管鸟demo的拓展玩法(不停歇的球)_第1张图片

在gif中,可以看到这个游戏的基本玩法,那么接下来,我会在本文中实现这个玩法:

1:添加地板预制体和小球刚体

使用CocosCreator完成水管鸟demo的拓展玩法(不停歇的球)_第2张图片

使用CocosCreator完成水管鸟demo的拓展玩法(不停歇的球)_第3张图片

2:新建game.js文件和block.js文件

//game.js


var state = null;
cc.Class({
    extends: cc.Component,

    properties: {
        wall: cc.Prefab,
    },

    // LIFE-CYCLE CALLBACKS:

    onLoad() {
        this.gameState = gameState;
        // cc.director.getPhysicsManager().enabled = true;//存在一定的问题,只可使用
        cc.director.getPhysicsManager().enabled = true;
        this.node.on(cc.Node.EventType.TOUCH_START, this.TouchStart, this)
        this.node.on(cc.Node.EventType.TOUCH_END, this.TouchEnd, this)
    },

    start() {
        
    },
    TouchStart() {
        // 小鸟向上飞翔
        this.state = 1
    },
    TouchEnd() {
        // cc.log('end')
        this.state = 0
    },
    gameStartBtn(){//开始游戏按钮点击
        this.gameState=1;
        this.node.getChildByName('gameMask').active = false;

        if(this.gameState==1){//开始按钮已经点击
            setInterval(() => {
                this.createWall();//创建水管
            }, 2000);
        }
    },
    createWall() {
        let wallNode = this.node.getChildByName('wallNode');
        let y = -200 + Math.random() * 400;
        let wall = cc.instantiate(this.wall);
        wall.x = 450;
        wall.y = y
        wallNode.addChild(wall);
        
    },

    update(dt) {
        let bird = this.node.getChildByName('ball')
        if(this.gameState==1){

            if (this.state == 1) {
                bird.y += 5
                bird.angle < 20 ? bird.angle += 1 : bird.angle = 20
            } else {
                bird.y -= 5
                bird.angle = 0 ? bird.angle -= 0.5 : bird.angle = 0
            }
        }
        
    },

});
//block.js


cc.Class({
    extends: cc.Component,

    properties: {
        
    },

    // LIFE-CYCLE CALLBACKS:

    onLoad () {
       
    },
    
    start () {

    },
    onBeginContact: function (contact, selfCollider, otherCollider) {
        setTimeout(() => {
            selfCollider.node.removeFromParent();
            selfCollider.node.destroy();
        }, 500);
    },

    update (dt) {
        // cc.log(this.childNode)
        this.node.x-=5;
        if(this.node.x<-450){
            cc.director.loadScene('game')
        }
    },
});

接下来,将game.js挂载在场景上的控制节点下面,然后将block.js挂载在地板预制体上,然后在chrome浏览器中预览,就可以看见效果了,这个demo基本实现了游戏的主要玩法,也可以在其中添加金币的生成,收集等效果来增强该游戏的趣味性。

你可能感兴趣的:(cocos,creator学习日记,游戏开发,cocos2d-js)