uinty中自定义mesh,做指向信息面板效果
来源:互联网 发布:php 动态实例化对象 编辑:程序博客网 时间:2024/06/06 06:54
运用unity中Mesh,做一个信息指向的效果
这一片是用自定义的mesh做一个指向信息面板的效果。自以后将会写一些工作中的一些功能与总结。如有问题敬请提出,共同进步。
先说下此功能的主要部分就是屏幕坐标与三维坐标的转换。也是一个比较难理解的地方。信息面板用的NGUI做的。因为获取的是显示器的分辨率,所以在全屏下运行才可看到效果。
上代码:
using UnityEngine; using System.Collections; public class DrawMesh : MonoBehaviour { GameObject gameobj; //绘制mesh的物体,如果是多个可以动态的生成 public Camera cameraObj; //NGUI中的摄像机 public GameObject lookObject;//被指向的物体 // Use this for initialization float x = 0;//屏幕的宽 float y = 0;//屏蔽的高 Color color; void Start () { color = Color.white; x = Screen.currentResolution.width; //屏幕分辨率 y = Screen.currentResolution.height; //这个地方我是动态获得的一个空的物体对象。用来创建三角形指示面片的。 gameobj = (GameObject)Instantiate(Resources.Load("GameObject")); } // Update is called once per frame void Update () { GetPositon(); } //绘制三角面片 void DrawTrianglesEX(GameObject triangles, Vector3 port1, Vector3 port2, Vector3 port3, Color color) { color.a = 0.8f;//面片的透明度 if (triangles.GetComponent<MeshFilter>() == null) { triangles.AddComponent<MeshFilter>(); //添加MeshFilter triangles.AddComponent<MeshRenderer>();//添加MeshRenderer //获得着色器 triangles.renderer.material.shader = Shader.Find("Transparent/Diffuse"); } //实时改变颜色 triangles.renderer.material.color = color; Mesh mesh = triangles.GetComponent<MeshFilter>().mesh; mesh.Clear(); //这个是主要的点的转换,在视窗位置转换成时间坐标位置。 Vector3 v1 = triangles.transform.InverseTransformPoint(port1); Vector3 v2 = triangles.transform.InverseTransformPoint(Camera.main.ViewportToWorldPoint(port2)); Vector3 v3 = triangles.transform.InverseTransformPoint(Camera.main.ViewportToWorldPoint(port3)); mesh.vertices = new Vector3[] { v1, v2, v3 }; mesh.triangles = new int[] { 0, 1, 2 }; } //获得三个点的位置,并且转化为屏幕坐标 void GetPositon() { Vector3 po = cameraObj.WorldToScreenPoint(transform.position); //在这个地方是生算的,这边完全可以算出面板的宽与高。注意的是2D摄相机与主摄像机的关系。建议不要去生算。 Vector3 po1 = new Vector3(po.x / x+0.075f, po.y / y, 1f); Vector3 po2 = po1 - new Vector3(0, 0.1f, 0); Vector3 v = lookObject.renderer.bounds.size; Vector3 equPosScreen = lookObject.transform.position+ new Vector3(0, v.y, 0); Vector3 po3 = equPosScreen; DrawTrianglesEX(gameobj, po3, po2, po1, color); } }
- uinty中自定义mesh,做指向信息面板效果
- Shader 做mesh简单的溶解效果
- uinty
- 在面板中显示信息
- 综合布线中信息面板安装
- Mesh系列文章 - 自定义Mesh
- winform中实现QQ面板效果
- Unity考虑做个zbrush效果 mesh 鼠标挤压变形效果,compute shader
- OGRE中mesh文件信息解析及提取之一
- uinty中对Xml文件的操作
- unity自定义inspector面板(选择不同枚举类型,inspector面板出现不同信息)
- Ext中弹出一个Panel面板信息,面板信息从数据库中读取
- [Unity实战]自定义mesh
- UNITY3D 自定义Mesh
- [Unity实战]自定义mesh
- 自定义mesh三角形
- jquery插件ui中tabs实现选择面板效果
- 用timer做在窗口中自动隐藏面板
- HTML5的表单(绝对特别强大的功能)
- secureCRT和secureFX官方下载地址
- UVA 11987 Almost Union-Find
- windows下如何使用QT编写dll程序
- final experience
- uinty中自定义mesh,做指向信息面板效果
- GDB调试
- ecshop中的dwt和lbi文件
- 3G网络和4G网络的区别
- 一步一个脚印笔试面试题(一)
- Navicat等图形工具无法(远程)连接MySQL(ERROR:10061)解决方法
- linux下动态链接库的使用-dlopen dlsym dlclose dlerror
- Oracle EBS在各平台下安装方法的搜集整理
- 使用OGNL通过请求对象访问bean属性