从0开始用CocosCreator开发兔了个兔消消乐小游戏(六)

341 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第31天,点击查看活动详情

上编辑模式下通过点击或者手指滑动时生成元素块。今天我们继续

1. 虽然在编辑模式下可以生成元素块了,但还有个小问题,就是生成的元素块都是有阴影的,我们改一下,只有当元素块被叠在下面的时候才有阴影,当在上面的时候就是高亮的状态

(1)打开block.ts脚本,定义canTouch

    canTouch:boolean;

(2)在init函数时让canTouch为true image.png

(3)增加判断元素块是否叠加的函数

    setTouch(can_touch){

        this.canTouch=can_touch

        if(this.canTouch){

            this.block_bg.active= false

        }else{

            this.block_bg.active=true

        }

    }

(4)增加获取包围盒的函数

    //获取包围盒

    getBoundingBox_pz(){

        let num_pz=8

        let node_UITransform_1=this.node.getComponent(UITransform)

        let rect_1=node_UITransform_1.getBoundingBox()

        let rect_3=new Rect(rect_1.x+num_pz,rect_1.y+num_pz,rect_1.width-num_pz2,rect_1.height-num_pz2)

        return rect_3

    }

(5)注意,要引入UITransform, Rect image.png

  2.打开game.ts脚本

(1)增加判断是否叠加函数

    //判断是否叠加

    pddj(){

        let children=this.parentBlocks.children

        for(let i=0;i<children.length;i++){

                let ts_block_1=children[i].getComponent(blocks)

                let rect_1=ts_block_1.getBoundingBox_pz()

            ts_block_1.setTouch(true)

            for (let j = i+1; j < children.length; j++) {

                let ts_block_2=children[j].getComponent(blocks)

                let rect_2=ts_block_2.getBoundingBox_pz()

                if(rect_1.intersects(rect_2)){

                    ts_block_1.setTouch(false)

                    break

                }

            }

        }

    }

 

(2)在onTouchStart函数里调用叠加函数

        this.pddj() image.png

(3)同样在onTouchMove函数里也调用叠加函数

      this.pddj() image.png

 

(4) 效果如下,在最上面的元素块是高亮,在下面的元素块是有阴影的 image.png

3.接下来做一个按钮,用来输出元素块的坐标

(1)在preBlockEdit节点下新建一个按钮,并且命名为btn_shuChu image.png

(2)btn_shuChu下的Label的String设置为输出 image.png

  (3)调整btn_shuChu按钮的位置 image.png

(4)按钮的过渡类型设置为SCALE image.png

4. 打开game.ts

(1) 添加按钮事件处理函数

    callBackBtn(event:Event,str:string){

    }

(2)添加按钮点击事件,并且关联到callBackBtn函数上 image.png

(3)为了区分不同的按钮事件,添加标识 image.png

(4)通过callBackBtn函数的str 接收之前定义的标识

    callBackBtn(event:Event,str:string){

        if (str=='btn_shuChu'){      

        }

    }

今天就到这里了,主要完善了元素块的显示效果以及添加了输出的按钮,但还没完善该功能。下次我们继续。可能写的过程中还有很多不好的地方,希望大家能指出来,在此,谢谢大家