Unity鼠标点击删除Mesh中的三角面
来源:互联网 发布:adobe reader百度软件 编辑:程序博客网 时间:2024/05/21 14:46
Unity中模型通过Mesh来渲染,Mesh由顶点坐标vertices和三角形数组组成。废话不多说,直接上代码。
using UnityEngine;using System.Collections;using System.Collections.Generic;public class SelectObjects : MonoBehaviour{ void Update(){/**点选*/if(Input.GetMouseButtonDown (0)) {//点出鼠标左键//通过鼠标点击,摄像机从屏幕上一点发射出一条射线,此处的参数应为屏幕坐标Ray ray= Camera.main.ScreenPointToRay (Input.mousePosition);RaycastHit hit;//用来保存射线碰撞信息//射线投射if (Physics.Raycast (ray, out hit)) {if(hit.transform==null)//如果射线没有碰撞到Transform,return return; //获取hit.transform的MeshFilter组件MeshFilter meshFilter=hit.transform.GetComponent();if (meshFilter == null)return;//获取hit.transform的meshMesh mesh = meshFilter.mesh ; //取出mesh的顶点和三角形数组int[] triangles = mesh.triangles; //new一个List将mesh的三角形数组拷贝来,方便删除修改 //将Array数组转换为ListList tris = new List (triangles);//hit.triangleIndex为射线碰撞到的三角面的索引,从0开始//三角面由三个顶点组成,//tris(hit.triangleIndex*3+2)为第triangleIndex个三角面的第三个顶点 //tris(hit.triangleIndex*3+2)为第triangleIndex个三角面的第二个顶点 //tris(hit.triangleIndex*3+2)为第triangleIndex个三角面的第一个顶点 tris.RemoveAt(hit.triangleIndex * 3 + 2); tris.RemoveAt(hit.triangleIndex * 3 + 1); tris.RemoveAt (hit.triangleIndex*3); //将List转换为Array数组int[] newTri = tris.ToArray ();mesh.triangles = newTri;//更新三角面数组mesh.RecalculateNormals ();//更新法线mesh.RecalculateBounds ();//更新包围体 //获取MeshCollider组件,更新用于检测碰撞的sharedMesh MeshCollider collider1 = hit.transform.GetComponent (); collider1.sharedMesh = mesh; //检测碰撞必须给物体添加MeshCollider组件 }}}}
阅读全文
0 0
- Unity鼠标点击删除Mesh中的三角面
- Unity里面三角面数
- unity 2D中的向着鼠标点击方向进行射击
- Unity 鼠标跟随点击位置
- Unity 中的 Mesh 及绘制圆环
- 京城游戏人-Day9:Unity 中的鼠标点击与触摸屏点击
- Unity Mesh
- Unity Mesh
- Unity中的自定义鼠标
- unity 中的鼠标事件
- Unity动态绘制mesh:点,线,面,模型
- 三角网格(Triangle Mesh)
- Unity Mesh(五) Mesh 立方体Cube贴图以及六个面分别贴不同的图片
- Unity Mesh(三) Mesh画球
- Unity 射线 (之鼠标点击的坐标)
- Unity 鼠标点击屏幕创建物体
- unity 鼠标点击自动寻路
- Unity鼠标点击地面控制人物移动
- Android基于http封装的网络请求框架
- Android -MediaPlayer 菜鸟心得
- 仿ios底部菜单栏
- 原生js调用json方法
- Android Material Design动画 Animated Vector Drawables|矢量图片动画
- Unity鼠标点击删除Mesh中的三角面
- [bigdata-108] spring-cloud-04 分布式服务的feign消费者
- 怎样用Java编写一个简单的计算器
- 大数据高效复制的处理案例分析总结
- 什么是数据库散列存储?
- 动态规划训练9 [Brackets POJ
- Libev 官方文档学习笔记
- android 调用网络api
- RSSI相关概念