unity中 拖拽任意的对象
来源:互联网 发布:优化探究官网 编辑:程序博客网 时间:2024/06/06 02:35
孙广东 2015.8.16
目的 : 我们能简单的通过 鼠标位置 得到目标对象 如果没有使用刚体组件
Step - 1: 在3D项目中设置场景. 一个空对象命名为: DragAndDrop ,和创建一些其他的游戏对象 如 sphere, cube 等
- 感觉如下l;Step - 2: C# 脚本命名为 "GameobjectDragAndDrop".
Step - 3: 添加方法:
GameObject ReturnClickedObject(out RaycastHit hit) { GameObject target = null; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray.origin, ray.direction * 10, out hit)) { target = hit.collider.gameObject;} return target; }
Step - 4: 在Update 方法中
void Update() { if (Input.GetMouseButtonDown(0)) { RaycastHit hitInfo; target = ReturnClickedObject(out hitInfo); if (target != null) { isMouseDrag = true; Debug.Log("target position :" + target.transform.position); //Convert world position to screen position. screenPosition = Camera.main.WorldToScreenPoint(target.transform.position);offset = target.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z)); } } if (Input.GetMouseButtonUp(0)) { isMouseDrag = false; } if (isMouseDrag) { //track mouse position. Vector3 currentScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z); //convert screen position to world position with offset changes. Vector3 currentPosition = Camera.main.ScreenToWorldPoint(currentScreenSpace) + offset; //It will update target gameobject's current postion. target.transform.position = currentPosition; } }
Step - 6: 运行程序,然后拖拽对象就OK了啊。。。。
1 0
- unity中 拖拽任意的对象
- unity 让对象的任意一个方向(局部坐标)旋转来面对世界中任意一个点或移动的对象
- 关于MFC中任意对象的拖拽功能的实现(COleDataSource, COleDropTarget)
- Unity中动态修改游戏中任意参数的框架
- Unity中绕任意轴任意角度旋转向量
- unity中对象池的使用
- Unity中对象池的应用
- Unity中对象池的使用
- Unity中对象池的应用
- swift 中获取任意对象的类名称
- unity中对象池
- Web中可以任意拖拽的树.
- Unity 对象的批处理
- unity的对象池
- WPF中给任意对象加阴影
- unity中查找对象的五种方法
- 在Unity中定义统一的对象搜索接口
- 在Unity中避免某个对象的剔除Culling
- Android自定义照相机实现(拍照、保存到SD卡,利用Bundle在Acitivity交换数据)
- 大牛们的博客收集
- css滤镜实现页面灰色黑白色效果代码
- 回溯法解决N皇后问题
- 断其一指------异步任务(AsyncTask)
- unity中 拖拽任意的对象
- 【HashMap】深入原理解析
- usaco Healthy Holsteins individual report
- 台大机器学习基石课程之机器学习基本原理和概念
- C++: 继承与派生
- 内存使用技巧及内存池实现(一)
- 存储过程循环添加数据到数据库中
- Linux学习笔记-----RPM包管理----源码包安装
- Foundation框架—字符串