cocos绘制随机形状

//绘制形状 dotCount:顶点数
    draw () {
        this.getComponent(cc.RigidBody).gravityScale=0
        this.node.position.x=360
        this.node.position.y=640

        const dotCount = Math.round(Math.random()*6+3);
        const points = [];
        let vectors =[];

        //随机形状
        const dig = 2 * Math.PI / dotCount;//周长2πr 一周的弧度数为2πr/r=2π,
        for (let i = 0; i < dotCount; i++)
        {
            const side = Math.random()*300+ 50;

            //顶点
            const x = side * Math.cos(i * dig);//cos=x/side
            const y = side * Math.sin(i * dig);//sin=y/side
            points.push({x:Math.round(x),y:Math.round(y)});

            let v = cc.v2(Math.round(x), Math.round(y));
            vectors.push(v);
        }
        cc.warn(points);
        cc.warn(vectors);

        //添加碰撞盒
        this.getComponent(cc.PhysicsPolygonCollider).points=vectors;

        //绘制
        const ctx = this.getComponent(cc.Graphics);
        ctx.clear();
        const len = points.length;
        ctx.moveTo(points[len - 1].x, points[len - 1].y);
        for (let i = 0; i < points.length; i++) {
            ctx.lineTo(points[i].x, points[i].y);
        }
        ctx.fill();
        ctx.stroke();
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容