资源简介
当我们做一些农场游戏或者类似可编辑战场类游戏时经常会遇到从UI上拖动物体在3D场景里生成,要实现这种从UI上拖物体的效果其实挺简单,代码不复杂,主要是想法很重要,一个优秀的程序员不只是技术扎实,更重要的是要多思考,不思考的程序员只是一个码农。
代码片段和文件信息
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Dragobject : MonoBehaviour {
//只针对指定的层级进行拖动
public layerMask _draglayerMask;
//指定当前要拖动的对象
public Transform currentTransform;
//是否可以拖动当前对象
public bool isDrag = false;
//用于存储当前需要拖动的对象在屏幕空间中的坐标
Vector3 screenPos = Vector3.zero;
//当前需要拖动对象的坐标相对于鼠标在世界空间坐标中的偏移量
Vector3 offset = Vector3.zero;
void Update () {
if (Input.GetMouseButtonDown (0)) {
//将鼠标输入点转化为一条射线
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
RaycastHit hitinfo;
//如果当前对象与指定的层级发生碰撞,表示当前对象可以被拖动
if (Physics.Raycast (ray out hitinfo 1000f _draglayerMask)) {
isDrag = true;
//将当前需要拖动的对象赋值为射线碰撞到的对象
currentTransform = hitinfo.transform;
//将当前对象的世界坐标转化为屏幕坐标
screenPos = Camera.main.WorldToScreenPoint (currentTransform.position);
//将鼠标的屏幕坐标转换为世界空间坐标,再与当前要拖动的对象计算两者的偏移量
offset = currentTransform.position - Camera.main.ScreenToWorldPoint (new Vector3 (Input.mousePosition.x Input.mousePosition.y screenPos.z));
} else {
isDrag = false;
}
}
if (Input.GetMouseButton (0)) {
if (isDrag == true) {
var currentScreenPos = new Vector3 (Input.mousePosition.x Input.mousePosition.y screenPos.z);
//鼠标的屏幕空间坐标转化为世界坐标,并加上偏移量
var currentPos = Camera.main.ScreenToWorldPoint (currentScreenPos) + offset;
currentTransform.position = currentPos;
}
}
if (Input.GetMouseButtonUp (0)) {
isDrag = false;
currentTransform = null;
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-07-31 07:41 Placeob
目录 0 2018-07-31 07:41 Placeob
文件 1347 2018-07-31 07:41 Placeob
文件 7207 2018-07-31 07:41 Placeob
目录 0 2018-07-31 07:41 Placeob
文件 213 2018-07-31 07:41 Placeob
目录 0 2018-07-31 07:41 Placeob
文件 2019 2018-07-31 07:41 Placeob
文件 229 2018-07-31 07:41 Placeob
文件 2012 2018-07-31 07:41 Placeob
文件 229 2018-07-31 07:41 Placeob
文件 1991 2018-07-31 07:41 Placeob
文件 229 2018-07-31 07:41 Placeob
文件 2019 2018-07-31 07:41 Placeob
文件 229 2018-07-31 07:41 Placeob
文件 213 2018-07-31 07:41 Placeob
目录 0 2018-07-31 07:41 Placeob
文件 2718 2018-07-31 07:41 Placeob
文件 231 2018-07-31 07:41 Placeob
文件 2709 2018-07-31 07:41 Placeob
文件 231 2018-07-31 07:41 Placeob
文件 2704 2018-07-31 07:41 Placeob
文件 231 2018-07-31 07:41 Placeob
文件 213 2018-07-31 07:41 Placeob
目录 0 2018-07-31 07:41 Placeob
文件 679 2018-07-31 07:41 Placeob
文件 229 2018-07-31 07:41 Placeob
文件 676 2018-07-31 07:41 Placeob
文件 229 2018-07-31 07:41 Placeob
文件 678 2018-07-31 07:41 Placeob
文件 229 2018-07-31 07:41 Placeob
............此处省略533个文件信息
- 上一篇:GSM模块的使用说明
- 下一篇:vivado烧写与擦除flash.pdf
相关资源
- LigerUi全套文件
- 直升机模型unity3d
- Unity SpringGUI 工具
- QR CodeBarcode Scanner and Generator--Cross Pl
- BS-ISO15622-2018--Intelligent transport system
- Unity3dObfuscatorSetup.rar
- UIAutomation自动化五大工具一个不少.
- Spy++AccEvent+AccExplorer32+Inspect+UISpy五个工
- Roboguide软件汉化
- UnityStudio.rar
- 在Keil MDK 4上 将ucosii和ucgui移植MINI24
- 打地鼠游戏资源以及源代码
- Unity可用的角色模型
- 基于Arduino的智能家居语音识别系统设
- 2.5d generator 2.0超好用的
- UGUI ScrollRect滚动优化:无限循环利用
- 将图集变成小图片导出
- unity答题系统-可直接使用
- 诺瓦太OEM617D 快速入门导引中文版
- 汽车发动机unity模型包
- MVC+EF框架+EasyUI实现权限管理(内含源
- arduino-1.8.1-windows
- 适用于mac 10.15系统使用的64位认证前获
- Unity 3D NGUI实战教程(80M完整版)
- Final IK 当前最新版
- 科幻UI资源包.zip
- 道法自然-面向对象实践指南 带目录
- unity科技Ui
- Visual Assist X 10.9 Build 2366.7z
- Ansys fluent 2020R1 theory guide
评论
共有 条评论