首页 > 网站 > 建站经验 > 正文

IOS开发:Unity3D根据动态的两个轨迹点绘-制面详解

2019-11-02 14:27:45
字体:
来源:转载
供稿:网友

 IOS开发:Unity3D根据动态的两个轨迹点绘制面详解 电脑高手

  暂时我们先忽略Z轴(这样在平面中看得更清楚),假设Z轴坐标都为0。假设游戏中有两个轨迹点在动态的增加与改变,最后将这两个点改变的轨迹拼接起来就是它们生成的面。如上图所示,第一个点的轨迹是“ 3,4,5,6,7” 第二个点的轨迹是“2,1,10,9,8” 。这两个点的长度是可变的,前提是他们两个的数量必需完全一样。接着,如下图所示,我们将这些点两两相连起来,目前一共形成了8个三角形面(可根据两个动态点的数量而确定整个网格面三角形面的数量)。最后我们将这8个三角形填充上同样的颜色,就可以实现一个完整的立体网格面。

  原理很简单,就是这样的我相信大家看到这里大家都能明白,接着我们就学习如何使用代码来实现它。首先创建Unity工程,接着创建一个空的游戏对象,然后给该游戏对象绑定Mesh Filter组件 与 Mesh Renderer组件。

  Mesh Filter组件:表示网格面,这个网格面是由我们使用代码将所有三角形拼接起来生成的面。

  Mesh Renderer组件:表示表示网格的渲染,可设置一个渲染的材质,它包括贴图与颜色。

  如下图所示,我说说里面比较重要的属性。Mesh Renderer中,Materials下拉列表中可设置网格模型的材质,此时我们设置了一个红色的材质。 Mesh Filter:目前为None,也不用再编辑器中为它赋值,因为这个网格模型我们会在代码中生成并且赋值。在下面就是方刚我们设置红色的材质资源,Shader中设置了贴图的属性,目前是GUI/ TextShader。它表示这个材质的渲染级别在GUI上,就是优先级是最一层的。举个例子无论在这个网格模型的前面绘制多少模型,它永远都会在最前面显示。就这个例子而言它的存在并不是必需的,其实Shader的选项还有很多,可透明、不可透明、镜面、反射等等,后期我会向大家详细道来。

  OK,现在资源文件都已经准备完毕,下面我们学习如何来绘制一个三角形,从简单的开始。。把下面的代码绑定在摄像机对象当中。

  [代码]java代码:

01 using UnityEngine; 02 using System.Collections.Generic; 03 using System; 04   05 public class Test : MonoBehaviour { 06   07
好看的搞笑gif[www.62-6.com/1/gaoxiaogif/]
void Start () 08 { 09 //得到MeshFilter对象,目前是空的。 10 MeshFilter meshFilter = (MeshFilter)GameObject.Find("face").GetComponent(typeof(MeshFilter)); 11 //得到对应的网格对象 12 Mesh mesh = meshFilter.mesh; 13   14 //三角形顶点的坐标数组 15 Vector3[] vertices = new Vector3[3]; 16 //三角形顶点ID数组 17 int[] triangles = new int[3]; 18   19 //三角形三个定点坐标,为了显示清楚忽略Z轴 20 vertices[0] = new Vector3(0,0,0); 21 vertices[1] = new Vector3(0,1,0); 22 vertices[2] = new Vector3(1,0,0); 23   24 //三角形绘制顶点的数组 25 triangles[0] =0; 26 triangles[1] =1; 27 triangles[2] =2; 28   29 //注释1 30 mesh.vertices = vertices; 31   32 mesh.triangles = triangles; 33   34 } 35   36 }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表