最强灌篮挑战达人之优化(一)

在之前的笔记中项目基本的流程都已经完成,但距离游戏的完善还有不足。
在本篇文章中我将就之前的程序出现的Bug进行优化。
在之前的游戏中主要是一些游戏内的基本功能少了一块,按照BOss给的模板,篮球框的位置是随机产生的且它是左右切换的,但在开发的过程中遇到了篮板框无法移动,这是为什么呢?原来啊,是在程序的开发中我给篮板添加了刚体和物理,所以当你在移动父节点时,如果你当前的父节点下还有子节点那么你的移动效果将是两个精灵的被拆分的景象。所以这里还需要移动子节点的位置,具体的移动方法先保存获取子节点当前的位置坐标(即当前子节点在父节点的局部坐标),之后再移动父节点,移动之后再进行子节点的位置移动,移动的位置就是之前保存的子节点的在父节点下的局部坐标。
        /*=======保存左边篮板的子节点的局部坐标=======*/
        this.child_1 = this.BasketMoveLeft.getChildByName("Basket_Left_1");
        this.offset_1 = this.child_1.getPosition();
        /*=======保存右边篮板的子节点的局部坐标=======*/
        this.child_2 = this.BasketMoveRight.getChildByName("Basket_Right_1");
        this.offset_2 = this.child_2.getPosition();
如上面的代码,这里保存了两个局部坐标,原因是因为这边需要实现篮板的左右切换,所以需要设置两个篮板。
    //左蓝板框移动特效
    Basket_MoveIn: function(){
        var PosY = (cc.random0To1() * 350) - 200;
        this.BasketMoveLeft.setPosition(-255, PosY);
        this.scheduleOnce(function(){
            this.child_1.setPosition(this.offset_1);
        },0);
        G_Temp = 1;       
        this.BasketMoveLeft.active = false;
        this.BasketMoveRight.active = true;
    },
   
    //右蓝板框移动特效
    Basket_MoveBack: function(){
        var PosY = (cc.random0To1() * 350) - 200;
        this.BasketMoveRight.setPosition(253, PosY);
        this.scheduleOnce(function(){
            this.child_2.setPosition(this.offset_2);
        },0);
        G_Temp = -1;       
        this.BasketMoveLeft.active = true;
        this.BasketMoveRight.active = false;
    },
我这边也是参照别人博客写的,如果你还有不清楚的可以看看这篇文章:https://blog.csdn.net/norman_lin/article/details/80689354
按照之前的设想是打算给篮板框整个做成随机位置移动的结果发现移动的时候坐标发生了错误,也就是说在之前的坐标是局部坐标,移动之后坐标发生了改变,变成了世界坐标了,移动的位置就是在游戏屏幕外面,所以针对这种问题我就直接随机它的Y轴坐标就行了,至于左右切换就做成显示和隐藏。当篮球进入蓝框且触碰到了评分点,就给游戏积分器加一,实体化加一分的特效。就是一个精灵做成了Prefab,实体化之后再进行上移,淡出等动画。实体化位置设置的是球体上方位置。
还有一个补充点就是设置评分点的位置,这个我想了好久一直没想到具体的解决方案,我这里说一下我的评分点吧。我这里也是使用物理碰撞系统设置的,我这里设置的评分点是设置在篮球网上,还有就是设置了分组,也就是碰撞时可以依靠分组来判断碰撞的是哪个物体。

猜你喜欢

转载自blog.csdn.net/ji2570489271/article/details/81126481