unity中 拖拽任意的对象
2015-08-24 08:42
525 查看
孙广东 2015.8.16
目的 : 我们能简单的通过 鼠标位置 得到目标对象 如果没有使用刚体组件
Step - 1: 在3D项目中设置场景. 一个空对象命名为: DragAndDrop ,和创建一些其他的游戏对象 如 sphere, cube 等
- 感觉如下l;
Step - 2: C# 脚本命名为 "GameobjectDragAndDrop".
Step - 3: 添加方法:
Step - 4: 在Update 方法中
Step - 6: 运行程序,然后拖拽对象就OK了啊。。。。
目的 : 我们能简单的通过 鼠标位置 得到目标对象 如果没有使用刚体组件
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了啊。。。。
相关文章推荐
- Unity换装之合并网格
- Unity模拟考题之Unity Certified Professional(专业能力认证)
- Unity模拟考题之Unity Certified User(应用能力认证)
- 【Unity 3D 性能优化 之 一】ParticleSyetem 的alive
- Unity3d_Unity3d"Library\UnityAssemblies\UnityEngine.xml"is denied错误解决方法
- Unity_UNity导出Android工程
- Unity插件之Kolmich(教你如何快速搭建一个完整的小地图)
- Unity3D 4.x 使用Mecanim实现动画控制
- Unity3D实现DoubleClick的一种方法
- unity, 慎用DontDestroyOnLoad
- Unity优化大全(二)之CPU-DrawCall- Batching
- Unity_在Unity不同工程之间导出导入资源的方法
- Unity优化大全(一)之开篇前言
- [Unity3D]Unity3D连衣裙实现游戏开发系统
- Unity 使用C/C++ 跨平台终极解决方案(PC,iOS,Android,以及支持C/C++的平台)
- Unity3D开发——安卓版的虚拟按键实现
- Unity3D开发——LeRunning的人物角色信息的显示
- Unity3D开发——LeRunning商店系统的实现
- Unity3d 实时折射和反射
- 漫步Unity3D(三)