unity3d 鼠标延各个方向拖拽物体
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 鼠标延各个方向拖拽物体相关推荐
- unity2d里实现鼠标拖拽物体的功能
在 Unity 中实现鼠标拖拽物体的功能需要使用到 Unity 的 Physics 系统. 要实现鼠标拖拽物体,你需要在场景中添加以下内容: 一个 Rigidbody 2D 组件,用于控制物体的运动. ...
- OpenGL实现在三维空间拖拽物体
最近本来想用OpenGL实现一个三维形变平台,但是没想到在鼠标交互这里就遇到了麻烦.OpenGL中并没有很实用的能够处理鼠标拖拽3D物体的办法,而我又不想导入外部的交互框架把程序搞得很冗杂.害,那咋办 ...
- TriggerPrefab 拖拽物体
模拟经营类游戏 有一个特点,就是 拖拽物体.常见的有<帝国><红警><部落战争><凯撒大帝>等等 2d 拖拽 大部分都是 用 OnDrag 方法来 拖动 ...
- Unity触摸屏幕 拖拽物体 旋转物体 放大缩小物体 单击 双击 长按
Unity触摸屏幕 拖拽物体 旋转物体 放大缩小物体 单击 双击 长按 拖拽物体 using System.Collections; using System.Collections.Generic; ...
- Unity移动---鼠标拖拽物体在3D空间移动(地面和非地面)
我这里脚本挂在了摄像机上: 下面是脚本: using System.Collections; using System.Collections.Generic; using UnityEngine;p ...
- Unity3D鼠标&Touch拖拽控制节点绕任意轴旋转的实现
这个拖拽最明显的一个优点就是有阻尼的效果 阻尼(damping)是指摇荡系统或振动系统受到阻滞使能量随时间而耗散的物理现象 using UnityEngine; using System.Collec ...
- Unity实用小工具或脚本——3D物体带坐标轴的拖拽
一.前言 我们最近要做一个线路的规划编辑,并且是在三维场景中,编辑完就立马能用.立马能用还好说,有特别多的轮子可以用,在三维场景中实时编辑就有点意思了.其实功能就是类似于在Unity的编辑界面操作一个 ...
- js实现鼠标拖拽功能基本思路
如果要设置物体拖拽,那么必须使用三个事件,并且这三个事件的使用顺序不能颠倒. onmousedown:鼠标按下事件 onmousemove:鼠标移动事件 onmouseup:鼠标抬起事件 拖拽的基本原 ...
- 鼠标拖拽mousemove和移动端touchmove问题
(转自https://segmentfault.com/a/1190000019581578) 需求 移动实现手指触摸移动物体 PC端实现鼠标拖拽物体 实现 移动端 通过touchstart和touc ...
最新文章
- 【POI 2007】Tetris Attack 正方体大作战(tet)
- ubuntu 安装VmTool
- 图像和视频的快速去雾算法研究
- T-SQL 将存储过程结果插入到表中
- GIS创新实践【实验1】郑州市地图制作与发布
- python find next_美化组4,findNext()函数
- CVPR 2019 | 腾讯AI Lab解读六大前沿方向及33篇入选论文
- Tomcat BIO . NIO . ARP 配置
- 【Matplotlib】【Python】如何使用matplotlib绘制各种图形
- 星巴克全面上线美团外卖 并联合美团推出“1971客厅”
- 2020天津理工大学计算机考研录取名单,天津理工大学2020年硕士研究生拟录取名单公示...
- stm32F10x 看程序知识点记录
- 提取Unity游戏资源和脚本
- js 自定义DOM事件
- html字体随页面大小变化,字体大小随网页大小变化
- 视频教程-Linux基础入门视频课程-Linux
- WIN7 64 安装串口驱动和mini2440USB驱动
- Frequency Estimation
- 单例模式-基类单例。。用于其他单例的派生
- javaweb代码编译打包上架流程简易说明
热门文章
- PWA(Progressive Web App)入门系列:Notification
- Ubuntu server下“初始化月份字符串出错”的解决
- c# 2.0实现摄象头视频采集,拍照,录象
- [react] React根据不同的环境打包不同的域名?
- [react] React Intl是什么原理?
- [react] render函数中return如果没有使用()会有什么问题?
- [html] 页面布局时你使用最多的标签是什么?div吗?在什么情况下会使用到div?
- [html] html和html5有什么区别呢?
- [html] 常见的浏览器内核都有哪些?并介绍下你对内核的理解
- 前端学习(1962)vue之电商管理系统电商系统之渲染商品分类的选择框