unity拖拽 到固定位置_Unity3D拖动任意对象GameObject移动到任意地方
今天不是很忙,研究了一下拖拽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移动到任意地方相关推荐
- Ant Design + react-drag-listview实现Table拖拽变换列位置
Ant Design + react-drag-listview实现Table拖拽变换列位置 Ant Design + react-drag-listview + react-resizable 实现 ...
- html元素拖动互换位置原理,【详】JS实现拖拽元素互换位置
写在前面的废话 大家好,我是练习js时长接近两年半的个人练习生--李大雷 算了,直接 鸡,你太美~ 应用场景 很多时候,我们需要让用户来自定义自己想要的菜单顺序,或者一些按钮的排序,那么这个时候,怎么 ...
- js拖拽之二:实现拖动元素上下左右改变元素大小
具体原理参考 js拖拽一 <script> var oDiv = document.getElementById("div1"); oDiv.onmousedown = ...
- unity 拖拽UI
我们经常会使用拖拽UI的效果,untiy 为拖拽事件也提供了现成的API,我们只要简单的实现几个接口即可 我们用两种方式来实现拖拽代码,一种是使用MonoBehaviour里的方法,一种是实现UI事件 ...
- MovieClip实现拖拽等移动位置的功能
今天我已经实现了对加载的MovieClip移动位置的功能,包括上.下.左.右移动功能.充满容器功能.1:1还原初始位置功能和鼠标拖拽移动功能.但是,移动位置的功能总体上仍旧存在一个问题:无法控制垂直滚 ...
- unity拖拽UI生成Cube并跟随鼠标移动,放置点可放下
代码: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine ...
- Flutter--可拖拽组件封装,支持拖动到列表边缘时图自动滚动!!!基于EdgeDraggingAutoScroller
已知问题:使用layout builder包裹获取子组件大小,会较大概率出现卡死,建议包裹父组件计算后传递进来:首尾滚动速度不一致: 核心组件,把这个套在你原有的listView或者GirdView等 ...
- Electron中实现拖拽文件进div中通过File对象获取文件的路径和内容
场景 用HTML和CSS和JS构建跨平台桌面应用程序的开源库Electron的介绍以及搭建HelloWorld: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/a ...
- vue 结合原生tabe 渲染表格 实现 固定头部、固定右侧、单选按钮、单元格拖拽监听位置
1.vue 结合原生tabe 渲染表格 实现 固定头部.固定右侧.单选按钮(避免el-table 数据量大卡顿) // table.vue <template><div id=&qu ...
最新文章
- 冠军方案分享:ICPR 2020大规模商品图像识别挑战赛冠军解读
- 大盘点|6D姿态估计算法汇总(上)
- java通过按钮打开新窗口_如何在java程序中,当点击一个按钮后,关闭当前窗口,开启一个新的窗口。...
- 新版“峡谷第一美”妲己尾巴毛发制作分享
- 【转】dicom网络通讯入门(3)
- python删除链表中的最小元素_LintCode Python 入门级题目 删除链表元素、整数列表排序...
- 马哥学习----李洋个人笔记----安全和加密
- Java的Number和Math类
- 超市在线购物商城源码分享
- Python数学建模 空间插值
- 因子分析后如何进行聚类分析?
- js使用高德地图api实现定位,行政区域划分,点击事件,只显示某个省市或区,海量点标记
- LeetCode知识点总结 - 884
- STM32F4 DMA
- 【点云相关】CvxNet:Learnable Convex Decomposition
- C语言学生成绩管理系统文档版,C语言学生信息管理系统(完整版)总结.docx
- android21是什么手机,三星S21成安卓新王者?详细对比发现,OPPO小米才是真厚道...
- mysql逻辑运算符的优先顺序_布尔逻辑算符的类型和在检索式中优先执行的顺序...
- codeforces 1428E. Carrots for Rabbits(贪心(非常优秀的贪心题),结构体重载运算符)
- WPF和Silverlight到底有什麼不同?