拖动三维物体360度旋转3种方法
来源:互联网 发布:淘宝店铺举报链接 编辑:程序博客网 时间:2024/05/24 05:05
//方法一(鼠标左键)
//private Transform hitTransfrom;
//void Update()
//{
// if (Input.GetMouseButtonDown(0))
// {
// RaycastHit hit;
// Ray mouseray = Camera.main.ScreenPointToRay(Input.mousePosition);
// if (Physics.Raycast(mouseray, out hit))
// {
// hitTransfrom = hit.transform;
// }
// }
// else if (Input.GetMouseButtonUp(0))
// {
// hitTransfrom = null;
// }
// if (hitTransfrom)
// {
// Matrix4x4 localmatrix = hitTransfrom.worldToLocalMatrix;//Matrix4x4矩阵 worldToLocalMatrix矩阵坐标世界到自身
// Vector3 vUp = localmatrix.MultiplyVector(new Vector3(0, 1, 0));//MultiplyVector变换方向
// Vector3 vRight = -localmatrix.MultiplyVector(new Vector3(1, 0, 0));
// float fMoveX = -Input.GetAxis("Mouse X") * Time.deltaTime * 200.0f;
// Quaternion rotation = Quaternion.AngleAxis(fMoveX, vUp);//Quaternion.AngleAxis四元数.角轴(float,vector3)
// hitTransfrom.localRotation *= rotation;//localRotation自身旋转角度
// float fMoveY = -Input.GetAxis("Mouse Y") * Time.deltaTime * 200.0f;
// Quaternion rotoy = Quaternion.AngleAxis(fMoveY, vRight);
// hitTransfrom.localRotation *= rotoy;
// }
//}
/// <summary>
/// 方法二(鼠标拖动左键简单)
/// </summary>
//void OnMouseDrag()//OnMouseDrag当鼠标拖动
//{
// this.transform.Rotate(new Vector3(Input.GetAxis("Mouse Y"), -Input.GetAxis("Mouse X"), 0) * 6f, Space.World);
//}
//方法三(添加了鼠标托拽后的惯性)
private bool onDrag = false;
public float speed = 6f;
private float tempSpeed;
private float axisX;
private float axisY;
void OnMouseDrag()
{
onDrag = true;
axisX = -Input.GetAxis("Mouse X");
axisY = Input.GetAxis("Mouse Y");
}
float Rigid()
{
if (onDrag)
{
if (tempSpeed < speed)
{
tempSpeed += speed * Time.deltaTime * 5;
}
else
{
tempSpeed = speed;
}
}
else
{
if (tempSpeed > 0)
{
tempSpeed -= speed * Time.deltaTime;
}
else
{
tempSpeed = 0;
}
}
return tempSpeed;
}
void Update()
{
this.transform.Rotate(new Vector3(axisY, axisX, 0) * Rigid(), Space.World);
if (!Input.GetMouseButton(0))
{
onDrag = false;
}
}
//private Transform hitTransfrom;
//void Update()
//{
// if (Input.GetMouseButtonDown(0))
// {
// RaycastHit hit;
// Ray mouseray = Camera.main.ScreenPointToRay(Input.mousePosition);
// if (Physics.Raycast(mouseray, out hit))
// {
// hitTransfrom = hit.transform;
// }
// }
// else if (Input.GetMouseButtonUp(0))
// {
// hitTransfrom = null;
// }
// if (hitTransfrom)
// {
// Matrix4x4 localmatrix = hitTransfrom.worldToLocalMatrix;//Matrix4x4矩阵 worldToLocalMatrix矩阵坐标世界到自身
// Vector3 vUp = localmatrix.MultiplyVector(new Vector3(0, 1, 0));//MultiplyVector变换方向
// Vector3 vRight = -localmatrix.MultiplyVector(new Vector3(1, 0, 0));
// float fMoveX = -Input.GetAxis("Mouse X") * Time.deltaTime * 200.0f;
// Quaternion rotation = Quaternion.AngleAxis(fMoveX, vUp);//Quaternion.AngleAxis四元数.角轴(float,vector3)
// hitTransfrom.localRotation *= rotation;//localRotation自身旋转角度
// float fMoveY = -Input.GetAxis("Mouse Y") * Time.deltaTime * 200.0f;
// Quaternion rotoy = Quaternion.AngleAxis(fMoveY, vRight);
// hitTransfrom.localRotation *= rotoy;
// }
//}
/// <summary>
/// 方法二(鼠标拖动左键简单)
/// </summary>
//void OnMouseDrag()//OnMouseDrag当鼠标拖动
//{
// this.transform.Rotate(new Vector3(Input.GetAxis("Mouse Y"), -Input.GetAxis("Mouse X"), 0) * 6f, Space.World);
//}
//方法三(添加了鼠标托拽后的惯性)
private bool onDrag = false;
public float speed = 6f;
private float tempSpeed;
private float axisX;
private float axisY;
void OnMouseDrag()
{
onDrag = true;
axisX = -Input.GetAxis("Mouse X");
axisY = Input.GetAxis("Mouse Y");
}
float Rigid()
{
if (onDrag)
{
if (tempSpeed < speed)
{
tempSpeed += speed * Time.deltaTime * 5;
}
else
{
tempSpeed = speed;
}
}
else
{
if (tempSpeed > 0)
{
tempSpeed -= speed * Time.deltaTime;
}
else
{
tempSpeed = 0;
}
}
return tempSpeed;
}
void Update()
{
this.transform.Rotate(new Vector3(axisY, axisX, 0) * Rigid(), Space.World);
if (!Input.GetMouseButton(0))
{
onDrag = false;
}
}
0 0
- 拖动三维物体360度旋转3种方法
- Unity3D 拖动物体旋转
- [Unity3d]旋转拖动物体
- Unity3d旋转拖动物体
- Unity3D 拖动物体旋转
- unity鼠标拖动三维物体
- Unity 拖动鼠标物体旋转
- 旋转三维物体(加三维物体上)
- ArcBall坐标旋转三维物体原理
- Unity3D 拖动物体旋转和缩放
- Unity3D实现点击物体旋转和拖动
- openGL鼠标拖动使得物体旋转
- unity中手指选中物体拖动旋转
- Unity3D 鼠标拖动和旋转物体以及鼠标拖动图片
- unity 3d中简单巧妙的实现拖动鼠标旋转物体
- 计算机图形学_三维物体的绘制及其旋转
- Unity中实现鼠标拖动旋转物体和鼠标点击旋转物体
- XNA中三维空间物体的几种旋转方法
- Fortran 第二课
- 我的PHP之路
- Ionic基础——表单输入ion-checkbox ion-radio ion-toggle ion-spinner
- Head first笔记四:简单工厂 工厂方法 抽象工厂
- MongoDB基本命令大全
- 拖动三维物体360度旋转3种方法
- EditText(输入框)详解
- 匿名突破网络限制 (Tor工作原理分析)
- 理解Docker容器
- Android快速开发 动画系列(一) 之 TranslateAnimation(平移动画)
- android 广播 BroadcastReciver写成内部类问题
- 64位win8.1下 安装配置instant client & plsqldev
- [群150178878]nRF51822学习笔记–硬件外设篇【1】
- 2016太原网络营销师开讲百度竞价(SEM)优化从哪些角度考虑?