unity3D游戏开发之窗口剪裁.doc_第1页
unity3D游戏开发之窗口剪裁.doc_第2页
unity3D游戏开发之窗口剪裁.doc_第3页
unity3D游戏开发之窗口剪裁.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实现效果 拖动readplane 当包围盒最小点超出bluePlane的最小点时(仅做了左边裁剪),对超出部分裁剪,当全部超出隐藏readPlane 当readPlane包围盒的最大坐标点大于bluePlane的最小点时,显示readPlane;文章来自【狗刨学习网】 阅读此文时,读者最好具备世界坐标 本地坐标 bounds 等之类的知识! collider.bounds、render.bounds的min max是世界坐标,size是大小mesh.bounds是本地坐标。mesh.vertices对线框顶点坐标更改。1. public Transform readPlane; 2.3. public Transform bluePlane; 4.5. Bounds readBoundPlane; 6.7. Bounds blueBoundPlane; 8.9. Vector3 blueBoundMin; 10.11. Vector3 blueBoundMax; 12.13. Mesh mesh; 14.15. void Start() 16.17. mesh=readPlane.GetComponent().mesh; 18.19. Vector3 ve=mesh.vertices; 20.21. print(ve1+“”+ve3);/readPlane最左边两个点 22.23. blueBoundPlane=bluePlane.gameObject.collider.bounds; 24.25. blueBoundMin=blueBoundPlane.min; 26.27. blueBoundMax=blueBoundPlane.max; 28.29. print(blueBoundMin+“|”+blueBoundMax+“|”+blueBoundPlane.size+“|”+blueBoundPlane.center); 30.31. 32.33. void Update() 34.35. if(Input.GetMouseButton(0) 36.37. readBoundPlane=readPlane.GetComponent().bounds; 38.39. if(readBoundPlane.min.xblueBoundMin.x)/包围盒最小坐标x超出blue的最小坐标开始裁剪 40. Vector3 vec3=mesh.vertices; 41.42. Vector3 vec3local=(readPlane.worldToLocalMatrix*new Vector3(readBoundPlane.min.x-blueBoundMin.x,0,0);/因为collider.bounds.min是世界坐标,mesh.vertices是本地坐标所以需要世界到本地的转化 43.44. vec31=new Vector3(mesh.bounds.min.x-vec3local.x,vec31.y,vec31.z); 45.46. vec33=new Vector3(mesh.bounds.min.x-vec3local.x,vec33.y,vec33.z); 47.48. Vector2 uvs=new Vector2vec3.Length; 49.50. for(int i=0;ivec3.Length;i+) 51.52. if(i%2!=0) 53.54. uvs=new Vector2(readBoundPlane.min.x-blueBoundMin.x+readBoundPlane.size.x)/readBoundPlane.size.x,mesh.uv.y);/更新UV 55.56. else 57.58. uvs=new Vector2(mesh.uv.x,mesh.uv.y); 59.60. 61.62. 63.64. mesh.uv=uvs; 65.66. mesh.vertices=vec3; 67.68. if(readBoundPlane.max.x=blueBoundMin.x) 69.70. readPlane.GetComponent().enabled=false; 71.72. if(readBoundPlane.max.xblueBoundMin.x) 73.74. readPlane.GetComponent().enabled=true; 75.76. 77.78. float x=Input.GetAxis(“Mouse X”); 79.80. float y=Input.GetAxis(“Mouse Y”); 81.82. readPlane.position+=newVecto

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论