Unity 依据Polygon Collider 2D 绘制 mesh

这篇博客介绍了如何在Unity3D中利用削耳朵算法将多边形转换为三角形网格,适用于创建PolygonCollider2D的自定义多边形。代码示例展示了从PolygonCollider2D获取顶点,然后通过计算三角形数组来构建Mesh的过程,同时提供了射线法判断点是否在多边形内的辅助函数。注意,多边形顶点需按逆时针顺序排列。
摘要由CSDN通过智能技术生成

参考文章:
mesh的简介
创建mesh
简单多边形三角化(暴力)(削耳朵)

偶尔需要依据多边形创建平面mesh,所以在网上浏览了很多资料,再修修补补才凑出一段代码。

    [ContextMenu("Create_Mesh_For_PolygonCollider2D")]
    void Create_Mesh_For_PolygonCollider2D()
    {
   

        PolygonCollider2D pc = GetComponent<PolygonCollider2D>();
        //获取多边形碰撞体的顶点
        Vector3[] v_vertices = new Vector3[pc.points.Length];
        for (int i = 0; i < pc.points.Length; i++)
        {
   
            v_vertices[i] = new Vector3(pc.points[i].x, pc.points[i].y, 0);
        }
        DoCreatPloygonMesh(v_vertices);
    }

    //*****  创建mesh
    void DoCreatPloygonMesh(Vector3[] s_Vertives)
    {
   

        //新建一个空物体进行进行绘制自定义多边形
        GameObject tPolygon = new GameObject("tPolygon");
        tPolygon.transform.parent = transform;
        //绘制所必须的两个组件
        tPolygon.AddComponent<MeshFilter>();
        tPolygon.AddComponent<MeshRenderer>();

        //新申请一个Mesh网格
        Mesh tMesh = new Mesh();

        //存储所有的顶点
        Vector3[] tVertices = s_Vertives;

        //存储画所有三角形的点排序
        List<int> tTriangles = Calculate_Triangles_CutEar_Method(tVertices)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值