Unity 鼠标批量选择物体
来源:互联网 发布:淘宝商品id在哪里看 编辑:程序博客网 时间:2024/05/18 02:50
/// <summary>/// 鼠标选择物体/// </summary>public class TestControl{ Vector3 mBtnDownPos = Vector3.zero; List<LineRenderer> lines = new List<LineRenderer>(); List<GameObject> cubes = new List<GameObject>(); public void Init() { GameObject prefabLine = Resources.Load<GameObject>("Line"); for (int i = 0; i < 4; i++) { lines.Add((GameObject.Instantiate(prefabLine) as GameObject).GetComponent<LineRenderer>()); } GameObject _cubes = GameObject.Find("Cubes"); for (int i = 0; i < _cubes.transform.childCount; i++) { cubes.Add(_cubes.transform.GetChild(i).gameObject); } } public void Update() { //按下 if (Input.GetMouseButtonDown(0)) { foreach (LineRenderer line in lines) line.renderer.enabled = true; mBtnDownPos = Helper.GetMouseWorldPos(new Plane(Vector3.up, Vector3.zero)); lines[0].SetPosition(0, mBtnDownPos); lines[3].SetPosition(0, mBtnDownPos); } //持续 if (Input.GetMouseButton(0)) { Vector3 mouseWorldPos = Helper.GetMouseWorldPos(new Plane(Vector3.up, Vector3.zero)); Vector3 pos1 = new Vector3(mBtnDownPos.x, 0, mouseWorldPos.z); Vector3 pos3 = new Vector3(mouseWorldPos.x, 0, mBtnDownPos.z); lines[0].SetPosition(1, pos1); lines[3].SetPosition(1, pos3); lines[1].SetPosition(0, mouseWorldPos); lines[2].SetPosition(0, mouseWorldPos); lines[1].SetPosition(1, pos1); lines[2].SetPosition(1, pos3); DelectSelect(mBtnDownPos, mouseWorldPos, pos1, pos3); } //放开 if (Input.GetMouseButtonUp(0)) { foreach (LineRenderer line in lines) line.renderer.enabled = false; foreach (GameObject c in cubes) c.renderer.material.SetColor("_TintColor", Color.blue); } } //检测是否选中 void DelectSelect(Vector3 v1, Vector3 v2, Vector3 v3, Vector3 v4) { Vector3 leftUp; Vector3 rightDown; FindPoint(out leftUp, out rightDown, v1, v2, v3, v4); foreach (GameObject c in cubes) { if (c.transform.position.x > leftUp.x && c.transform.position.x < rightDown.x && c.transform.position.z < leftUp.z && c.transform.position.z > rightDown.z) { c.renderer.material.SetColor("_TintColor", Color.green); } else { c.renderer.material.SetColor("_TintColor", Color.blue); } } } //找出左上角和右下角 void FindPoint(out Vector3 leftUp, out Vector3 rightDown, Vector3 v1, Vector3 v2, Vector3 v3, Vector3 v4) { List<Vector3> point = new List<Vector3>(); point.Add(v1); point.Add(v2); point.Add(v3); point.Add(v4); point.Sort((a, b) => { if (a.x > b.x) return 1; if (a.x < b.x) return -1; return 0; }); leftUp = point[0]; rightDown = point[3]; point.Sort((a, b) => { if (a.z > b.z) return 1; if (a.z < b.z) return -1; return 0; }); leftUp.z = point[3].z; rightDown.z = point[0].z; }}
0 0
- Unity 鼠标批量选择物体
- unity通过鼠标批量删除(隐藏)物体
- 鼠标选择物体
- unity让物体鼠标平滑移动物体
- unity 鼠标拖动物体移动
- Unity鼠标拖拽物体
- unity鼠标拖动三维物体
- Unity 拖动鼠标物体旋转
- 【Unity】物体跟随鼠标移动
- Unity 鼠标点击屏幕创建物体
- unity鼠标拖拽物体移动
- Unity 鼠标拖动场景内的物体
- unity中鼠标拖拽物体移动
- unity 鼠标控制摄像机围绕物体旋转
- Unity 实现鼠标拖动3D物体
- unity中根据鼠标移动旋转物体
- unity 3d 鼠标旋转物体脚本
- unity实现鼠标点击后拖拽物体
- 【Android学习笔记】OnSearchRequest()调用搜索框仿QQ微信
- JAVA语言编写的冒泡排序算法
- JAVA利用冒泡排序构思出的求数组逆序的算法
- Arbitrage (HDU 1217)
- ::作用域运算符
- Unity 鼠标批量选择物体
- navigation pop到指定页
- C++ Primer学习之(3)——标准库类型
- java-折半查找算法(两种程序形式)
- 数据结构学习笔记3
- c++函数里的传值 传址
- java-利用折半查找算法将一个数插入有序数组中适当位置
- php程序员学C/C++之学习系列-【C基础】
- 【Flume NG用户指南】(2)配置