资源简介
u3d拖拽旋转缩放模型脚本:
拖放到要操作的模型即可
拖放到要操作的模型即可
代码片段和文件信息
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DragRoteScale : MonoBehaviour
{
public float scaleRate = 0.01f; //缩放系数
public float scaleMin = 0.1f; //最小缩放
public float scaleMax = 10.0f; //最大缩放
public bool isRotateY = true; //是否绕y轴旋转
public bool isRotateX = true; //是否绕X轴旋转
public float rotateRate = 1.0f; //旋转系数
public Transform transform = null; //要操作的物体若直接挂在物体上不用设置
private Touch oldTouch1; //上次触摸点1(手指1)
private Touch oldTouch2; //上次触摸点2(手指2)
private bool isDrag = false; //拖拽标志
private Vector3 m_Offset; //偏移值
private Vector3 m_TargetScreenVec; //当前物体对应的屏幕坐标
private bool isRote = false; //是否旋转
private Vector2 oldMousePos; //鼠标上次位置
void Start()
{
if (transform == null)
{
transform = gameobject.transform;
}
}
void Update()
{
if (Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer)
{
if (Input.touchCount <= 0) //没有触摸
return;
Touch touch1 = new Touch();
Touch touch2 = new Touch();
if (Input.touchCount >= 1)
touch1 = Input.GetTouch(0);
if (Input.touchCount >= 2)
touch2 = Input.GetTouch(1);
if (Input.touchCount == 1)//单指
{
if (touch1.phase == TouchPhase.Began)//开始单击
{
Ray ray = Camera.main.ScreenPointToRay(touch1.position);
//hit用来存储碰撞物体的信息
RaycastHit hit;
//ray表示射线,hit存储物体的信息100为设定射线发射的距离
if (Physics.Raycast(ray out hit 100) && hit.transform == transform) //自身被点中
{
isDrag = true;
//当前物体对应的屏幕坐标
m_TargetScreenVec = Camera.main.WorldToScreenPoint(transform.position);
//偏移值=物体的世界坐标,减去转化之后的鼠标世界坐标(z轴的值为物体屏幕坐标的z值)
m_Offset = transform.position - Camera.main.ScreenToWorldPoint(new Vector3(touch1.position.x touch1.position.y m_TargetScreenVec.z));
}
else
isDrag = false;
}
else
{
if (isDrag) //拖拽
{
//当前坐标等于转化鼠标为世界坐标(z轴的值为物体屏幕坐标的z值)+ 偏移量
transform.position = Camera.main.ScreenToWorldPoint(new Vector3(touch1.position.x touch1.position.y m_TargetScreenVec.z)) + m_Offset;
}
else //旋转
{
if (isRotateY)
transform.Rotate(Vector3.down * touch1.deltaPosition.x * rotat
- 上一篇:C#winform textbox 画边框和圆角
- 下一篇:Echart使用demo
相关资源
- WinCe自动更新程序,数据,脚本
- unity3D简易计算器C#脚本代码
- Unity不用Dll直接读取BMP图片并转为Te
- InputTouch 触摸拖拽常用unity插件
- PastePicture.dll WinForm 复制.剪切.粘贴.拖
- 安装C#服务的批处理脚本-利用Install
- 数据同步服务程序源码(附数据库脚
- ax播放器实现文件拖入播放和拖动到可
- NHtmlFilter1.0过滤Html危险脚本 防止XSS攻
- c#驱动cywin执行tcl脚本
- wpf_DragDrop WPF 鼠标拖拽功能
- C#实现的脚本引擎
- WPF DataGrid 行拖拽
- WPF listbox之间拖动 dragdrop
- 基于unity3D串口通信程序,可以实现发
- 基于Mdbg实现的C#脚本代码调试
- 用逆波兰算法实现的c#脚本解析源代码
-
在WebBrowser中执行ja
vasc ript脚本的几 - DataGridView到DataGridView的拖拽的
- 仿VS 创建窗体可拖拽
- WPF现场视频拖拽查看
- wpf 用户管理系统源码实现了增/删/改
- asp Gridview控件实现增删改查含数据库
- asp.net 学生成绩管理系统源码(含数据
- 仿qq聊天工具源码(含服务器端、客户
- OA办公完整源码(含数据库脚本)
- C# 鼠标拖拽图像
- 实现了在Winform中图片的拖拽移动及缩
- C# 拖拽截图拖拽拉伸图片选框
- C# 进销存管理系统源码(含数据库脚
评论
共有 条评论