用unity的mesh画圆
来源:互联网 发布:马哥linux 编辑:程序博客网 时间:2024/04/28 19:20
这几天没事做,用mesh画个圆玩玩,本来想用圆的轨迹方程(x-x0^2 + (y-y0)^2 =R^2来获取圆的点的,再用相邻的两点和圆心画一个三角面,最后拼成一个“圆”。但是数学学不好,看到根号和平方我都怕了,最后决定先画一块三角面,再通过他旋转一周就可以得到一个"圆"了。这个三角形是一个等边三角形,假如圆心坐标是(0,0),圆上的第一个点为(-3,0),如果这个圆是 由36个三角面组成的画,那么没个三角面的顶角为360/36=10度,再用三角函数求出第二个点的坐标,这就得到了三角面,再把这个三角面旋转36次,每次旋转10度就是一个圆了。看看代码吧,呵呵~~~
先建一个GameObject,命名为triangle,绑定MeshTest.js,再做成预制。
MeshTest.js:
function Start () {gameObject.AddComponent("MeshFilter");gameObject.AddComponent("MeshRenderer");var mesh : Mesh = GetComponent(MeshFilter).mesh;mesh.Clear(); var v:Vector3[]=new Vector3[3]; var v2:Vector2[]=new Vector2[3]; v[0]=Vector3(0,0,0); v[1]=Vector3(-3,0,0); v[2]=Vector3(-3*Mathf.Cos(10*Mathf.Deg2Rad),-3*Mathf.Sin(10*Mathf.Deg2Rad)); mesh.vertices = v;mesh.uv = v2; mesh.triangles = [0, 1, 2];}
先建一个circle.js脚本,绑定在摄像机上就行,再把里面的triangle对象绑定我们的预制triangle就行了。
circle.js:
var triangles:GameObject;function Start () { for(var i:int=0;i<36;i++){ var obj:GameObject=Instantiate(triangles,Vector3(0,0,0),Quaternion.identity)as GameObject; obj.transform.RotateAround(Vector3(0,0,0), Vector3(0,0,1), i*10.0); } }
运行一下就能看到如下效果:
- 用unity的mesh画圆
- Unity里的Mesh属性
- Unity里的Mesh属性
- unity mesh的自定义创建
- Unity Mesh
- Unity Mesh
- Unity中创建自己的mesh以及动态修改mesh
- Unity Mesh(四) Mesh 平面图形的贴图
- Unity中创建自己的mesh以及动态修改mesh
- Unity动态绘制曲线Mesh的代码
- Unity Mesh(三) Mesh画球
- 【unity实用技能】Unity Mesh更新的时候增加内存
- Unity mesh 合并
- Unity mesh属性理解
- [Unity实战]自定义mesh
- Unity mesh 合并
- Unity Mesh初探
- unity代码创建mesh
- 新时尚Windows8开发(29):多媒体捕捉(高级篇)
- 关于date的应用
- SQL中GROUP BY的用法
- 2011-05-26 17:03 android 打开各种类型的文件
- 《那些年啊,那些事——一个程序员的奋斗史》——30
- 用unity的mesh画圆
- Linux服务器之间建立信任关系
- 如何获得ios设备中的硬件信息(下)
- inline解决 error lnk2005
- groupby orderby同时使用
- 让Apache Shiro保护你的应用
- 《那些年啊,那些事——一个程序员的奋斗史》——31
- Android Selector的实现原理
- mysql操作