Unity如何用网格绘制一个正五边形

网格绘制其实非常简单,只要我们把握好顶点的位置,顶点索引的顺序就可以绘制出自己想要的网格。
绘制一个正五边形,我们必须先把五个顶点的坐标都算出来,我们就按以下这种情况来说明以下:
熟悉三角函数的朋友一定可以非常容易的求出每个点的坐标了,在这里具体过程就不列举了,最后求出五个点的坐标分别是(0,0)(cos36,sin36)(2cos36,0)(cos72+1,-sin72)(cos72,-sin72)
我们这里的坐标是按顺时针来纪录的,从原点开始。
在这里我们需要注意一点,三角形顶点索引的顺序决定了三角形是正面还是反面,在Unity坐标空间中,顺时针的索引代表正面,反之则是反面,我们设刚才的五个点分别是A,B,C,D,E,那么我们构成五边形的三个三角形就是A-B-C,A-C-D,A-D-E
接下来就是我们调用Mesh的公开的属性来绘制网格了,代码如下:
using UnityEngine;
public class ExampleClass : MonoBehaviour
{
    private Vector3 [] newVertices; 
    private int [] newTriangles;
    void Start()
    {
        newVertices = new Vector3 [5] { Vector3 .zero, new Vector3 ( Mathf .Cos( Mathf .Deg2Rad * 36), 0, Mathf .Sin( Mathf .Deg2Rad * 36)), new Vector3 (2 * Mathf .Cos( Mathf .Deg2Rad * 36), 0, 0), new Vector3 ( Mathf .Cos( Mathf .Deg2Rad * 72)+1, 0, - Mathf .Sin( Mathf .Deg2Rad * 72)), new Vector3 ( Mathf .Cos( Mathf .Deg2Rad * 72), 0, - Mathf .Sin( Mathf .Deg2Rad * 72)) };
        newTriangles = new int [9] { 0, 1, 2,0,2,3 ,0,3,4};
        Mesh mesh = new Mesh ();
        mesh.vertices = newVertices;       
        mesh.triangles = newTriangles;      
        GetComponent< MeshFilter >().mesh = mesh;
       
    }
}
我们只需要将脚本挂载有MeshFilter组件的物体上就可以使用了。其实绘制网格最关键的就是搞清楚构成三角形时顶点的顺序,如果还有不同的绘制方法或者更好的算法欢迎讨论<毕竟绘制一个五边形还得求五个点坐标,感觉这个方法好麻烦:(>
  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值