using UnityEngine;
using System.Collections;//选择轴向
public enum directionEnum{x_dir,y_dir,z_dir,
}
public class DragObject : MonoBehaviour {// Use this for initializationpublic directionEnum myDirection;public Transform target;//需要拖拽的目标public bool isDrag;//表示当前是否可拖动public float MinDistance;public float MaxDistance;private Vector3 mousePos;/// </summary>void Start () {//下面是我用NGUI的事件添加的,也可以使用UGUI或者射线检测//UIEventListener.Get (this.gameObject).onDrag = DragTarget;//UIEventListener.Get (this.gameObject).onDragEnd = EndDrag;
}// Update is called once per framevoid Update () {}public void SetTarget(Transform go){this.target = go;mousePos = Input.mousePosition;//初始化鼠标初始位置,或者放到Start函数里
    }public void DragTarget(){if (isDrag) {Vector3 ScreenSpace = Camera.main.WorldToScreenPoint(target.position); //目标世界坐标转屏幕,获取z值Vector3 curScreenSpace = new Vector3(Input.mousePosition.x,Input.mousePosition.y,ScreenSpace.z);//当前鼠标位置转世界Vector3 offset = target.position - Camera.main.ScreenToWorldPoint (new Vector3 (mousePos.x, mousePos.y, ScreenSpace.z));//鼠标上一帧的世界位置和目标点的位置差Vector3 CurPosition = Camera.main.ScreenToWorldPoint(curScreenSpace)+offset;//鼠标当前位置+位置差switch (myDirection) {case directionEnum.x_dir:target.position = new Vector3 (Mathf.Clamp( CurPosition.x,MinDistance,MaxDistance), target.position.y, target.position.z); break;case directionEnum.y_dir:target.position = new Vector3 (target.position.x,Mathf.Clamp( CurPosition.y,MinDistance,MaxDistance), target.position.z); break;case directionEnum.z_dir:target.position = new Vector3 ( target.position.x, target.position.y, Mathf.Clamp( CurPosition.z,MinDistance,MaxDistance)); break;default:break;}mousePos = Input.mousePosition;}}}

如果有不对,或者更好的方法,大家多多指教

转载于:https://www.cnblogs.com/WgBlog/p/7593819.html

unity3d 鼠标延各个方向拖拽物体相关推荐

  1. unity2d里实现鼠标拖拽物体的功能

    在 Unity 中实现鼠标拖拽物体的功能需要使用到 Unity 的 Physics 系统. 要实现鼠标拖拽物体,你需要在场景中添加以下内容: 一个 Rigidbody 2D 组件,用于控制物体的运动. ...

  2. OpenGL实现在三维空间拖拽物体

    最近本来想用OpenGL实现一个三维形变平台,但是没想到在鼠标交互这里就遇到了麻烦.OpenGL中并没有很实用的能够处理鼠标拖拽3D物体的办法,而我又不想导入外部的交互框架把程序搞得很冗杂.害,那咋办 ...

  3. TriggerPrefab 拖拽物体

    模拟经营类游戏 有一个特点,就是 拖拽物体.常见的有<帝国><红警><部落战争><凯撒大帝>等等 2d 拖拽 大部分都是 用 OnDrag 方法来 拖动 ...

  4. Unity触摸屏幕 拖拽物体 旋转物体 放大缩小物体 单击 双击 长按

    Unity触摸屏幕 拖拽物体 旋转物体 放大缩小物体 单击 双击 长按 拖拽物体 using System.Collections; using System.Collections.Generic; ...

  5. Unity移动---鼠标拖拽物体在3D空间移动(地面和非地面)

    我这里脚本挂在了摄像机上: 下面是脚本: using System.Collections; using System.Collections.Generic; using UnityEngine;p ...

  6. Unity3D鼠标&Touch拖拽控制节点绕任意轴旋转的实现

    这个拖拽最明显的一个优点就是有阻尼的效果 阻尼(damping)是指摇荡系统或振动系统受到阻滞使能量随时间而耗散的物理现象 using UnityEngine; using System.Collec ...

  7. Unity实用小工具或脚本——3D物体带坐标轴的拖拽

    一.前言 我们最近要做一个线路的规划编辑,并且是在三维场景中,编辑完就立马能用.立马能用还好说,有特别多的轮子可以用,在三维场景中实时编辑就有点意思了.其实功能就是类似于在Unity的编辑界面操作一个 ...

  8. js实现鼠标拖拽功能基本思路

    如果要设置物体拖拽,那么必须使用三个事件,并且这三个事件的使用顺序不能颠倒. onmousedown:鼠标按下事件 onmousemove:鼠标移动事件 onmouseup:鼠标抬起事件 拖拽的基本原 ...

  9. 鼠标拖拽mousemove和移动端touchmove问题

    (转自https://segmentfault.com/a/1190000019581578) 需求 移动实现手指触摸移动物体 PC端实现鼠标拖拽物体 实现 移动端 通过touchstart和touc ...

最新文章

  1. 【POI 2007】Tetris Attack 正方体大作战(tet)
  2. ubuntu 安装VmTool
  3. 图像和视频的快速去雾算法研究
  4. T-SQL 将存储过程结果插入到表中
  5. GIS创新实践【实验1】郑州市地图制作与发布
  6. python find next_美化组4,findNext()函数
  7. CVPR 2019 | 腾讯AI Lab解读六大前沿方向及33篇入选论文
  8. Tomcat BIO . NIO . ARP 配置
  9. 【Matplotlib】【Python】如何使用matplotlib绘制各种图形
  10. 星巴克全面上线美团外卖 并联合美团推出“1971客厅”
  11. 2020天津理工大学计算机考研录取名单,天津理工大学2020年硕士研究生拟录取名单公示...
  12. stm32F10x 看程序知识点记录
  13. 提取Unity游戏资源和脚本
  14. js 自定义DOM事件
  15. html字体随页面大小变化,字体大小随网页大小变化
  16. 视频教程-Linux基础入门视频课程-Linux
  17. WIN7 64 安装串口驱动和mini2440USB驱动
  18. Frequency Estimation
  19. 单例模式-基类单例。。用于其他单例的派生
  20. javaweb代码编译打包上架流程简易说明

热门文章

  1. PWA(Progressive Web App)入门系列:Notification
  2. Ubuntu server下“初始化月份字符串出错”的解决
  3. c# 2.0实现摄象头视频采集,拍照,录象
  4. [react] React根据不同的环境打包不同的域名?
  5. [react] React Intl是什么原理?
  6. [react] render函数中return如果没有使用()会有什么问题?
  7. [html] 页面布局时你使用最多的标签是什么?div吗?在什么情况下会使用到div?
  8. [html] html和html5有什么区别呢?
  9. [html] 常见的浏览器内核都有哪些?并介绍下你对内核的理解
  10. 前端学习(1962)vue之电商管理系统电商系统之渲染商品分类的选择框