【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《教程:抛物线的画法》,欢迎阅读!

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.wddqxz.cn/51313980d2f34693daef5ef7ba0d4a7303766c58.html