今天不是很忙,研究了一下拖拽GameObject移动到任意位置,沿x轴和z轴移动,其他的也就不说了,上代码:using UnityEngine;

using System.Collections;

public class DragAndDrog : MonoBehaviour {

private GameObject target;

private bool isMouseDrag;

private Vector3 screenPosition;

private Vector3 offset;

// Use this for initialization

void Start () {

}

// Update is called once per frame

void Update () {

GameObjectDragAndDrog();

}

//任意拖拽

private GameObject ReturnGameObjectDrag(out RaycastHit hit)

{

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;

}

//拖拽Updata

private void GameObjectDragAndDrog()

{

if (Input.GetMouseButtonDown (0))

{

RaycastHit hitInfo;

target = ReturnGameObjectDrag(out hitInfo);

if (target != null)

{

isMouseDrag = true;

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)

{

Vector3 currentScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z);

Vector3 currentPosition = Camera.main.ScreenToWorldPoint(currentScreenSpace) + offset;

target.transform.localPosition = new Vector3(currentPosition.x, currentPosition.y, currentPosition.z);

}

}

}

本脚本可以加载任意一个对象GameObject,场景中所有带Collider的对象,当鼠标点击拖动时候都可以沿x和z轴拖动。之前,都是要拖动那个GameObject就会写一个脚本挂在上面,今天实现了不用每一个要拖动的GameObject都挂载脚本,也不用将移动的GameObject赋给某个变量。

unity拖拽 到固定位置_Unity3D拖动任意对象GameObject移动到任意地方相关推荐

  1. Ant Design + react-drag-listview实现Table拖拽变换列位置

    Ant Design + react-drag-listview实现Table拖拽变换列位置 Ant Design + react-drag-listview + react-resizable 实现 ...

  2. html元素拖动互换位置原理,【详】JS实现拖拽元素互换位置

    写在前面的废话 大家好,我是练习js时长接近两年半的个人练习生--李大雷 算了,直接 鸡,你太美~ 应用场景 很多时候,我们需要让用户来自定义自己想要的菜单顺序,或者一些按钮的排序,那么这个时候,怎么 ...

  3. js拖拽之二:实现拖动元素上下左右改变元素大小

    具体原理参考 js拖拽一 <script> var oDiv = document.getElementById("div1"); oDiv.onmousedown = ...

  4. unity 拖拽UI

    我们经常会使用拖拽UI的效果,untiy 为拖拽事件也提供了现成的API,我们只要简单的实现几个接口即可 我们用两种方式来实现拖拽代码,一种是使用MonoBehaviour里的方法,一种是实现UI事件 ...

  5. MovieClip实现拖拽等移动位置的功能

    今天我已经实现了对加载的MovieClip移动位置的功能,包括上.下.左.右移动功能.充满容器功能.1:1还原初始位置功能和鼠标拖拽移动功能.但是,移动位置的功能总体上仍旧存在一个问题:无法控制垂直滚 ...

  6. unity拖拽UI生成Cube并跟随鼠标移动,放置点可放下

    代码: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine ...

  7. Flutter--可拖拽组件封装,支持拖动到列表边缘时图自动滚动!!!基于EdgeDraggingAutoScroller

    已知问题:使用layout builder包裹获取子组件大小,会较大概率出现卡死,建议包裹父组件计算后传递进来:首尾滚动速度不一致: 核心组件,把这个套在你原有的listView或者GirdView等 ...

  8. Electron中实现拖拽文件进div中通过File对象获取文件的路径和内容

    场景 用HTML和CSS和JS构建跨平台桌面应用程序的开源库Electron的介绍以及搭建HelloWorld: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/a ...

  9. vue 结合原生tabe 渲染表格 实现 固定头部、固定右侧、单选按钮、单元格拖拽监听位置

    1.vue 结合原生tabe 渲染表格 实现 固定头部.固定右侧.单选按钮(避免el-table 数据量大卡顿) // table.vue <template><div id=&qu ...

最新文章

  1. 冠军方案分享:ICPR 2020大规模商品图像识别挑战赛冠军解读
  2. 大盘点|6D姿态估计算法汇总(上)
  3. java通过按钮打开新窗口_如何在java程序中,当点击一个按钮后,关闭当前窗口,开启一个新的窗口。...
  4. 新版“峡谷第一美”妲己尾巴毛发制作分享
  5. 【转】dicom网络通讯入门(3)
  6. python删除链表中的最小元素_LintCode Python 入门级题目 删除链表元素、整数列表排序...
  7. 马哥学习----李洋个人笔记----安全和加密
  8. Java的Number和Math类
  9. 超市在线购物商城源码分享
  10. Python数学建模 空间插值
  11. 因子分析后如何进行聚类分析?
  12. js使用高德地图api实现定位,行政区域划分,点击事件,只显示某个省市或区,海量点标记
  13. LeetCode知识点总结 - 884
  14. STM32F4 DMA
  15. 【点云相关】CvxNet:Learnable Convex Decomposition
  16. C语言学生成绩管理系统文档版,C语言学生信息管理系统(完整版)总结.docx
  17. android21是什么手机,三星S21成安卓新王者?详细对比发现,OPPO小米才是真厚道...
  18. mysql逻辑运算符的优先顺序_布尔逻辑算符的类型和在检索式中优先执行的顺序...
  19. codeforces 1428E. Carrots for Rabbits(贪心(非常优秀的贪心题),结构体重载运算符)
  20. WPF和Silverlight到底有什麼不同?

热门文章

  1. return,break,continue三者区别
  2. WITH AS【原创】
  3. *62.分页和分段的区别
  4. 为什么要用相对论为GPS导航提供修正
  5. Python正在勒死R吗?
  6. .htaccess:正则表达式、重定向代码
  7. 数学在机器学习中的重要性[by Dahua Lin]
  8. Django多进程中的查询错乱问题以及mysql gone away问题
  9. linux系统共享盘,linux与其他操作系统文件共享方法
  10. au vst插件_失真效果音频插件