篮球挑战达人

这是我第一次接触Cocos Cretor,博主之前学的是Unity3D开发,由于U3D的工作不怎么好找所以博主打算转2D。这也是我学Cocos Creator的第二天就面试上的公司,也是我的第一个项目。写的不好的地方希望大家多多包涵。
这个游戏是“最强灌篮大作战”,由于之前没写过类似的游戏,所以在我接触到这个项目时感觉亚历山大。不过在我每天加班加点的学习过程中,程序已经渐渐成型。虽然在很多的地方稍有不足。
第一步,先创建一个Cocos Cretor的项目,如图:

第二步,按照程序的设计样板,编辑相应的界面。

这里简单说一下,此类游戏的重点,是设置它的物理,碰撞等系统。在这个游戏里,博主为了防止篮球被弹出屏幕,楼主把游戏界面做成了盒子。

盒子的组成属性如上图,添加方法:点击添加组件=>物理=>Collider =>box。
即可完成所有盒子的添加。
第三步,物理组建的添加怎么可能少了篮球呢。篮球的物理大部分和盒子的物理类似,只是部分数据不同。请看图。
 

哦对了,物理和碰撞系统默认情况下是关闭的。所以如果要使用首先得开启物理系统和碰撞系统。
Game.js: onLoad()
 

这里还要补充一点的是设置蓝板框,因为大部分的物理检测都是在蓝板上

 

如图,在篮板上我添加了四个物理碰撞,首先是蓝板(防止球穿过篮板),其次是在进球的筐,让球能够从两个物理点进球(也是为了防止篮球穿过球筐),第四个点是用来检测球是否进筐。当球与该点接触,即进球。计分器加一。接触判断需要添加组。

第四步,物理设置好了接下来就是控制篮球的方向,及点击跳动了。我这里就直接粘贴代码了。我把触摸写在了Canvas上也就是Game脚本上。然后调用控制Player节点。
Game.js
cc.Class({
    extends: cc.Component,

    properties: {
        //player 节点,用于获取主角弹跳的高度,控制主角行动
        player: {
            default: null,
            type: cc.Node
        },

        //更新分数的Label
        ScoreLabel: {
            default: null,
            type: cc.Label
        },  
    },

    onLoad () {
       
        //开启冲力,感觉没啥用
        cc.director.getPhysicsManager().enabled = true;
        cc.director.getPhysicsManager().debugDrawFlags = cc.PhysicsManager.DrawBits.e_aabbBit |
        // cc.PhysicsManager.DrawBits.e_pairBit |
        // cc.PhysicsManager.DrawBits.e_centerOfMassBit |
        cc.PhysicsManager.DrawBits.e_jointBit |
        cc.PhysicsManager.DrawBits.e_shapeBit;
        cc.director.getPhysicsManager().debugDrawFlags = 0;

        /*==========================开启碰撞检测系统==========================*/
        var manager = cc.director.getCollisionManager();
        manager.enabled = true;

        /*==========================开启物理碰撞==========================*/ 
        this.physicsManager = cc.director.getPhysicsManager();
        this.physicsManager.enabled = true;

        /*==========================触摸监听==========================*/
        this.node.on(cc.Node.EventType.TOUCH_START,function(touch){
          
            //角色绑定控件
            var hero = this.player.getComponent("Player");
            //实现onTouchBegan事件回调函数  
            cc.log(touch)
            var touchLocX = touch.getLocation().x;
            if(touchLocX < cc.winSize.width/2) {
                hero.node.runAction(hero.setJumpRightUpAction());//精灵跳跃
            }
            else if (touchLocX > cc.winSize.width/2) {
                hero.node.runAction(hero.setJumpLeftUpAction());//精灵跳跃
            }
            cc.log("touchLocX: " + touchLocX );
            //hero.node.runAction(hero.setJumpUpAction());//精灵跳跃
        }, this);   
    },

    /*=================================================================Update=================================================================*/
    update

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值