Unity如何用网格绘制一个正五边形
来源:互联网 发布:php pack 打包字符串 编辑:程序博客网 时间:2024/04/30 03:31
网格绘制其实非常简单,只要我们把握好顶点的位置,顶点索引的顺序就可以绘制出自己想要的网格。
绘制一个正五边形,我们必须先把五个顶点的坐标都算出来,我们就按以下这种情况来说明以下:
熟悉三角函数的朋友一定可以非常容易的求出每个点的坐标了,在这里具体过程就不列举了,最后求出五个点的坐标分别是(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的公开的属性来绘制网格了,代码如下:
usingUnityEngine;
publicclassExampleClass:MonoBehaviour
{
privateVector3[] newVertices;
privateint[] newTriangles;
voidStart()
{
newVertices =newVector3[5] {Vector3.zero,newVector3(Mathf.Cos(Mathf.Deg2Rad * 36), 0, Mathf.Sin(Mathf.Deg2Rad * 36)), newVector3(2 *Mathf.Cos(Mathf.Deg2Rad * 36), 0, 0), newVector3(Mathf.Cos(Mathf.Deg2Rad * 72)+1, 0, -Mathf.Sin(Mathf.Deg2Rad * 72)), newVector3(Mathf.Cos(Mathf.Deg2Rad * 72), 0, -Mathf.Sin(Mathf.Deg2Rad * 72)) };
newTriangles =newint[9] { 0, 1, 2,0,2,3 ,0,3,4};
Meshmesh =newMesh();
mesh.vertices = newVertices;
mesh.triangles = newTriangles;
GetComponent<MeshFilter>().mesh = mesh;
}
}
我们只需要将脚本挂载有MeshFilter组件的物体上就可以使用了。其实绘制网格最关键的就是搞清楚构成三角形时顶点的顺序,如果还有不同的绘制方法或者更好的算法欢迎讨论<毕竟绘制一个五边形还得求五个点坐标,感觉这个方法好麻烦:(>
阅读全文
1 0
- Unity如何用网格绘制一个正五边形
- 如何用Unity加载一个真实的进度条
- 如何用C#和ADO.NET建立一个数据绑定网格
- Unity中如何用代码实现横版游戏路径的绘制
- Unity&Shader基础篇-绘制网格+圆盘
- Unity&Shader基础篇-绘制网格+圆盘
- Unity中shader实现绘制六边形网格
- 如何用CSS3+HTML5绘制一个3x3的3D魔方?
- 如何用python编写一个绘制马赛克图像的自写程序mask = np.zeros
- 如何用Core Plot绘制柱状图
- 如何用matlab来绘制动画?
- 如何用Keynote绘制app原型图
- 如何用几何画板绘制立体圆锥体
- 如何用eclipse插件绘制ER图
- 如何用AltiumDesigner绘制STC89C51单片机原理图
- 如何用化学软件绘制苯环
- [Unity&JSON&List&数组]如何用一个 list 代替 二维 sting 类型数组
- 如何用unity发布Android程序APK
- python入门1之 list、tuple、dict、set的基本要点
- js 百度地图
- 角谷定理
- spring 整合hibernate Caused by: java.lang.ClassNotFoundException: javax.persistence.Entity
- Hibernate cascade
- Unity如何用网格绘制一个正五边形
- 如何在同一系统里同时启动多个Tomcat
- mysql的基本设定
- java扫描文件夹下面的所有文件(递归与非递归实现)
- $(window).scrollTop()和$(document).scrollTop()区别
- struts标签使用示例
- 窗口
- angularjs的简易购物代码
- Linux部署tomcat+apache+java环境