实现效果 拖动readplane 当包围盒最小点超出bluePlane的最小点时(仅做了左边裁剪),对超出部分裁剪,当全部超出隐藏readPlane 当readPlane包围盒的最大坐标点大于bluePlane的最小点时,显示readPlane;

阅读此文时,读者最好具备世界坐标 本地坐标 bounds 等之类的知识!
collider.bounds、render.bounds的min max是世界坐标,size是大小  mesh.bounds是本地坐标。mesh.vertices对线框顶点坐标更改。

 public Transform readPlane;public Transform bluePlane;Bounds readBoundPlane;Bounds blueBoundPlane;Vector3 blueBoundMin;Vector3 blueBoundMax;Mesh mesh;void Start(){mesh=readPlane.GetComponent<MeshFilter>().mesh;Vector3[] ve=mesh.vertices;print(ve[1]+"\\"+ve[3]);//readPlane最左边两个点blueBoundPlane=bluePlane.gameObject.collider.bounds;blueBoundMin=blueBoundPlane.min;blueBoundMax=blueBoundPlane.max;print(blueBoundMin+"||||"+blueBoundMax+"|||"+blueBoundPlane.size+"|||||"+blueBoundPlane.center);}void Update(){if(Input.GetMouseButton(0)){readBoundPlane=readPlane.GetComponent<BoxCollider>().bounds;if(readBoundPlane.min.x<blueBoundMin.x)//包围盒最小坐标x超出blue的最小坐标开始裁剪
            {Vector3[] vec3=mesh.vertices;Vector3 vec3local=(readPlane.worldToLocalMatrix*new Vector3(readBoundPlane.min.x-blueBoundMin.x,0,0));//因为collider.bounds.min是世界坐标,mesh.vertices是本地坐标所以需要世界到本地的转化vec3[1]=new Vector3(mesh.bounds.min.x-vec3local.x,vec3[1].y,vec3[1].z);vec3[3]=new Vector3(mesh.bounds.min.x-vec3local.x,vec3[3].y,vec3[3].z);Vector2[] uvs=new Vector2[vec3.Length];for(int i=0;i<vec3.Length;i++){if(i%2!=0){uvs[i]=new Vector2(((readBoundPlane.min.x-blueBoundMin.x)+readBoundPlane.size.x)/readBoundPlane.size.x,mesh.uv[i].y);//更新UV
                    }else{uvs[i]=new Vector2(mesh.uv[i].x,mesh.uv[i].y);}}mesh.uv=uvs;mesh.vertices=vec3;}if(readBoundPlane.max.x<=blueBoundMin.x){readPlane.GetComponent<MeshRenderer>().enabled=false;}if(readBoundPlane.max.x>blueBoundMin.x){readPlane.GetComponent<MeshRenderer>().enabled=true;}float x=Input.GetAxis("Mouse X");float y=Input.GetAxis("Mouse Y");readPlane.position+=new  Vector3(x,y,0);}}

最终效果图:

转载于:https://www.cnblogs.com/U-tansuo/archive/2012/07/11/2587151.html

【原】Unity3D 窗口裁剪相关推荐

  1. 计算机图形学E9——裁剪——固定矩形窗口裁剪多边形(凸多边形/凹多边形)

    其他计算机图形学实验见 链接 文章目录 其他计算机图形学实验见 [链接](https://blog.csdn.net/weixin_41894030/article/details/103111655 ...

  2. 计算机图形学E7——裁剪-交互式Liang-Barskey矩形窗口裁剪直线

    其他计算机图形学实验见 链接 #include<GL/glut.h> #include<iostream> #include<algorithm> #include ...

  3. Unity3D摄像机裁剪——NGUI篇

    有时候,需要在一个UIScrollView中显示一个带有3D模型或者粒子特效的列表 NGUI的UIScrollView无法裁剪3D模型和粒子特效,所以想到一个办法就是使用摄像机来裁剪 最重要的是摄像机 ...

  4. [原]unity3d之http多线程异步资源下载

    郑重声明:转载请注明出处 U_探索 本文诞生于乐元素面试过程,被面试官问到AssetBundle多线程异步下载时,愣了半天,同样也被深深的鄙视一回(做了3年多u3d 这个都没用过),所以发誓要实现出来 ...

  5. [原]unity3d ios平台内存优化(一)

    关于内存优化,人云亦云 各有己见.本文将通过设置Strpping Level ,减少内存使用. 先看三幅图: 1.没做任何优化,默认选项 2.设置Stripping level 为 Use micro ...

  6. [原]Unity3D深入浅出 - 新版粒子系统 (Shuriken)

    Shuriken粒子系统是继Unity3.5版本之后推出的新版粒子系统,它采用了模块化管理,个性化的粒子模块配合粒子曲线编辑器使用户更容易创作出各种兵分复杂的粒子效果. 创建一个粒子系统的方式有两种: ...

  7. [原]unity3d刀光剑影(二)

    本篇研究 暴走武侠 效果.直接贴代码 Shader "Cg shader with single texture" {Properties {_MainTex ("Tex ...

  8. DIRECTX中独占模式与窗口模式的切换(译)

    <script language="javascript" type="text/javascript">document.title=" ...

  9. 模态对话框的父窗口设置

    我的毕业设计基本是搞完了,那么最近几天在做一些测试和修改.其中就有一个问题折腾了我好久,今天才发现,原来是这么回事. 我创建了一个非模态的子对话框,然后在这个子对话框中又创建了一个模态对话框,结果意外 ...

最新文章

  1. 主键SQL教程–如何在数据库中定义主键
  2. poj2352(树状数组)
  3. urllib2使用总结
  4. ipvsadm+keepalived安装错误解决
  5. bzoj2067: [Poi2004]SZN
  6. 连接oracle数据库,新建用户登录界面
  7. js ajax数据的获取小示例 天气信息填充表格
  8. XI 安装MS SQLSERVER JDBC 驱动
  9. 2020牛客国庆集训派对day1 C. Bob in Wonderland
  10. 栈-线性表(代码、分析、汇编)
  11. LeetCode 203. Remove Linked List Elements
  12. PHP - 如何处理文件名乱码
  13. disruptor流程
  14. 第三讲 系统建模与仿真
  15. 如何在线倍速观看百度网盘学习视频并快速做笔记
  16. 华为手机怎么设置无线网连接服务器,华为手机无线网络设置静态ip
  17. 念荆轲[原创诗一首]
  18. 计算机对操作系统函数的调用失败,win8系统电脑弹出提示“远程过程调用失败且未执行”的修复方法...
  19. flume1.9 用户指南(中文版)
  20. php 上传apk包到cdn_零基础搭建自己的博客网站和配置CDN设置wordpress篇

热门文章

  1. JZOJ 5436. 【NOIP2017提高A组集训10.30】Group
  2. 如何读论文?-如何写好科技论文之我见(八)
  3. Codeforces 1276C/1277F/1259F Beautiful Rectangle (构造)
  4. python可以这样学豆瓣_python爬虫学习之路:豆瓣爬虫练习
  5. springcloud分布式事务_Spring Cloud学习资源一网打尽!Awesome Spring Cloud v1.0
  6. mysql未知数据库_如何处理这个错误(1049,“未知数据库”/ users / ohyunjun / work / astral / mysql“”)...
  7. 基于Hadoop生态技术构建阿里搜索离线系统
  8. The first curriculum design experiment report in spring 2019
  9. hdu 2098 分拆素数和(一个偶数拆分成两个不同素数和 拆法数量)
  10. 机器学习/深度学习 问题总结及解答