Unity 通过计算定点绘制图形
2016-03-26 16:39
525 查看
通过计算绘制三角形,效果如下:(运行后鼠标左键点击,出现三角形)
代码如下:
代码如下:
using UnityEngine; using System.Collections; using System.Collections.Generic; public class MeshTest : MonoBehaviour { //用于存储绘制三角形的顶点坐标 private Vector3[] vertices; //用于记录绘制三角形所需要的顶点ID顺序 private int[] triangles; //记录顶点数 private int count = 0; //定义Mesh private Mesh mesh; //定义一个链表用于记录所有点的坐标 private List<Vector3> list; void Start() { //添加MeshFilter gameObject.AddComponent<MeshFilter>(); //添加MeshRenderer gameObject.AddComponent<MeshRenderer>(); //new一个链表 list = new List<Vector3>(); //获得Mesh mesh = GetComponent<MeshFilter>().mesh; //修改Mesh的颜色 GetComponent<MeshRenderer>().material.color = Color.red; //选择Mesh中的Shader GetComponent<MeshRenderer>().material.shader = Shader.Find("Transparent/Diffuse"); //清空所有点,用于初始化! mesh.Clear(); } void Update() { //点击鼠标左键 if (Input.GetMouseButton(0)) { //顶点数+1 //count++; //将获得的鼠标坐标转换为世界坐标,然后添加到list链表中。 //list.Add(Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0.8f))); count+=3; list.Add(new Vector3(-1.0f, 0, 0.8f)); list.Add(new Vector3(1.0f, 0, 0.8f)); list.Add(new Vector3(0, 1.0f, 0.8f)); } //如果顶点数>=3,那么就开始渲染Mesh if (count >= 3) { //根据顶点数来计算绘制出三角形的所以顶点数 triangles = new int[3 * (count - 2)]; //根据顶点数来创建记录顶点坐标 vertices = new Vector3[count]; //将链表中的顶点坐标赋值给vertices for (int i = 0; i < count; i++) { vertices[i] = list[i]; } //三角形个数 int triangles_count = count - 2; //根据三角形的个数,来计算绘制三角形的顶点顺序(索引)
//注意顺序,否则可能看不到,(0,1,2)(0,2,1) for (int i = 0; i < triangles_count; i++) { //这个算法好好琢磨一下吧~ triangles[3 * i] = 0; triangles[3 * i + 1] = i + 1; triangles[3 * i + 2] = i + 2; } //设置顶点坐标 mesh.vertices = vertices; //设置顶点索引 mesh.triangles = triangles; } } }
相关文章推荐
- Unity 问题汇总
- Unit3D--人机交互入门
- Unity3D学习1——鼠标点击效果显示
- 【Unity】2.2 Unity编辑器中的常用菜单项
- 【Unity】2.1 初识Unity编辑器
- 【Unity】2.0 第2章 Unity编辑器和基本操作
- Unity 随机函数的应用
- Unity中ScrollRect锁定元素详述(一)
- 对于解决新版unity5.x的license error 问题
- Unity3D研究院之提取游戏资源的三个工具支持Unity5(八十四)
- unity3D 如何提取游戏资源
- Unity3D 学习笔记5 ——使用ScriptableObject进行序列化
- Unity3D asset bundle 格式简析
- 各种光照的算法原理
- Unity怎样在Editor下运行协程(coroutine)
- Unity Shaders and Effects Cookbook (2-4) 压缩和混合纹理贴图:使用灰度图存储插值信息
- Unity中Awake和Start的区别
- Unity构建读取XML简单架构的方法与注意事项
- Thinking in Unity3D:材质系统概览
- Thinking in Unity3D:材质系统概览