Unity3D教程:抛物线的画法 Posted on 2013年07月09日 by U3d / Unity3D 基础教程/被围观 55 次 抛物线公式y=a*x*x+b*x+c;a>0,开口向上;a<0,开口向下。b=0,抛物线对称轴为y轴。c=0,抛物线经过原点。获取一些抛物线上的点,然后相邻的两点和原点画三角面,这样可以用三角面拼成了“抛物面”了,而且还可以通过修改a的值来改变小山峰的陡峭程度。下面来看看代码吧! 新建一个空的GameObject,然后绑定Parabola.js脚本就ok了。 Parabola.js: 01 private var a:int;//a>0,开口向上;a<0,开口向下。 02 03 private var b:int;//b=0,抛物线对称轴为y轴 04 05 private var c:int;//c=0,抛物线经过原点 06 07 private var size:int; 08 09 function Start () { 10 11 a=-1; 12 13 b=0; 14 15 c=0; 16 17 size=22; 18 19 gameObject.AddComponent("MeshFilter"); 20 21 gameObject.AddComponent("MeshRenderer"); 22 23 var mesh : Mesh = GetComponent(MeshFilter).mesh; 24 25 mesh.Clear(); 26 27 var v:Vector3[]=new Vector3[size]; 28 29 var v2:Vector2[]=new Vector2[size]; 30 31 var index:int []=new int[(size-2)*3]; 32 33 for(var i:int=0;i<size;i++){ 34 35 if(i==0) 36 { 37 v[i]=Vector3(0,-1,0); 38 39 } 40 else 41 { 42 var x:float=(i-size/2)*0.1; 43 44 v[i].x=x; 45 46 v[i].y=a*x*x+b*x+c; 47 48 v[i].z=0; 49 } 50 51 if(i>1){ 52 53 index[3*i-6]=0; 54 55 index[3*i-5]=i-1; 56 57 index[3*i-4]=i; 58 //Unity3D教程手册:www.unitymanual.com 59 } 60 61 print("v["+i+"]="+v[i]); 62 } 63 64 mesh.vertices = v; 65 66 mesh.uv = v2; 67 68 mesh.triangles = index; 69 70 for(var j:int=0;j<index.Length;j++){ 71 72 print(j+"=="+index[j]); 73 } 74 75 } 本文来源:https://www.wddqw.com/doc/51313980d2f34693daef5ef7ba0d4a7303766c58.html