unity鼠标拖动三维物体

转载 2015年07月08日 15:33:02

鼠标拖动三维物体移动

 private Vector3 _vec3TargetScreenSpace;// 目标物体的屏幕空间坐标

 private Vector3 _vec3TargetWorldSpace;// 目标物体的世界空间坐标

 private Transform _trans;// 目标物体的空间变换组件

 private Vector3 _vec3MouseScreenSpace;// 鼠标的屏幕空间坐标

 private Vector3 _vec3Offset;// 偏移

 void Awake( ) { 

_trans = transform; 

 IEnumerator OnMouseDown( ) 

 

        { 

                // 把目标物体的世界空间坐标转换到它自身的屏幕空间坐标 

                _vec3TargetScreenSpace = Camera.main.WorldToScreenPoint(_trans.position);

                // 存储鼠标的屏幕空间坐标(Z值使用目标物体的屏幕空间坐标) 

                _vec3MouseScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, _vec3TargetScreenSpace.z);

                // 计算目标物体与鼠标物体在世界空间中的偏移量 

                _vec3Offset = _trans.position - Camera.main.ScreenToWorldPoint(_vec3MouseScreenSpace);

                // 鼠标左键按下 

                while ( Input.GetMouseButton(0) ) {

                    // 存储鼠标的屏幕空间坐标(Z值使用目标物体的屏幕空间坐标)

                       _vec3MouseScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, _vec3TargetScreenSpace.z);

                   // 把鼠标的屏幕空间坐标转换到世界空间坐标(Z值使用目标物体的屏幕空间坐标),加上偏移量,以此作为目标物体的世界空间坐标

                      _vec3TargetWorldSpace = Camera.main.ScreenToWorldPoint(_vec3MouseScreenSpace) + _vec3Offset;              

                  // 更新目标物体的世界空间坐标 

                     _trans.position = _vec3TargetWorldSpace;

                 // 等待固定更新 

                    yield return new WaitForFixedUpdate();

                } 

        }

 

 

 

                                                              

 

 

 

 

 

 

 

 

相关文章推荐

unity3d用鼠标拖动物体的一段代码

这是一段拖动物体的代码,比较简洁明了,对了解unity3d脚本概念有些帮助!在此加上注释分享! 02varmouseOverColor = Color.blue;//声明变量为蓝色 03private...

unity3D C#脚本实现鼠标拖动物体

using System.Collections; public class clickmove : MonoBehaviour { // Use this for initializa...
  • tc1hen
  • tc1hen
  • 2013年01月02日 20:26
  • 22405

Unity2D中使用鼠标拖动物体移动

昨天用unity开发了一个微信的飞机大战,效果图如下。期间遇到了很多问题都一一解决了,印象最深的问题就是如何用鼠标拖动飞机的移动。今天我就把我的方法拿出来分享。 我的方法是在飞机物体中写...

unity3d用鼠标拖动物体的一段代码

这是一段拖动物体的代码,比较简洁明了,对了解unity3d脚本概念有些帮助!在此加上注释分享! var mouseOverColor = Color.blue;//声明变量为蓝色 private va...

UGUI實現鼠標旋轉三維物體的Demo

  • 2016年09月24日 10:47
  • 8.05MB
  • 下载

在unity中用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放

1.鼠标滚轮实现缩放:将摄像机的镜头拉近或者拉远,调整摄像机的视角就可以实现, 将代码挂载在摄像机上 主要实现代码如下:using UnityEngine; using System.Collec...

unity鼠标控制旋转物体

  • 2015年03月17日 10:57
  • 190KB
  • 下载

Unity3d 鼠标点住物体拖动物体

把脚本挂在被拖动的物体上! void Update () { } //下面的函数是当鼠标触碰到碰撞体或者刚体时调用,我的碰撞体设置是mesh c...

Unity UI上实现物体的三维展示

最近做一个类似网上商城产品展示的UI模块,但是又要实现在UI上实现对三维物体的动态展示,于是写下此篇文章。 核心想法是在一个主相机看不见的位置,新建一个用来展示的相机,在该相机前方放一个需要展...

Unity中鼠标左键按下,拖拽物体移动

把这段脚本拖给想要拖拽的物体,然后加上碰撞盒就可以了。   private Vector3 _vec3TargetScreenSpace;// 目标物体的屏幕空间坐标 private V...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:unity鼠标拖动三维物体
举报原因:
原因补充:

(最多只允许输入30个字)