这篇文章主要为大家详细介绍了unity3D实现物体任意角度自旋转,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了unity3D实现物体任意角度自旋转的具体代码,供大家参考,具体内容如下
主要涉及函数:
Input.GetAxis(“Mouse x”) 可取得鼠标横向(x轴)移动增量
Input.GetAxis(“Mouse y”) 可取得鼠标竖向(y轴)移动增量
通过勾股定理获取拖拽长度,长度越长旋转越快。在project setting--Input 可以设置。
这里用Cube来做例子,因为方体看旋转比较清楚,如图:
代码如下:
using UnityEngine;
using System.Collections;
public class NewBehaviourScript : MonoBehaviour {
private bool onDrag = false; //是否被拖拽//
public float speed = 6f; //旋转速度//
private float tempSpeed; //阻尼速度//
private float axisX = 1;
//鼠标沿水平方向移动的增量//
private float axisY = 1; //鼠标沿竖直方向移动的增量//
private float cXY;
void OnMouseDown()
{
//接受鼠标按下的事件//
axisX = 0f; axisY = 0f;
}
void OnMouseDrag() //鼠标拖拽时的操作//
{
onDrag = true;
axisX = -Input.GetAxis("moveX");
//获得鼠标增量//
axisY = Input.GetAxis("moveY");
cXY = Mathf.Sqrt(axisX * axisX + axisY * axisY); //计算鼠标移动的长度//
if (cXY == 0f) { cXY = 1f; }
}
float Rigid() //计算阻尼速度//
{
if (onDrag)
{
tempSpeed = speed;
}
else
{
if (tempSpeed > 0)
{
tempSpeed -= speed * 2 * Time.deltaTime / cXY; //通过除以鼠标移动长度实现拖拽越长速度减缓越慢//
}
else {
tempSpeed = 0;
}
}
return tempSpeed;
}
void Update()
{
// this.transform.Rotate(new Vector3(axisY, axisX, 0) * Rigid(), Space.World); //这个是是按照之前方向一直慢速旋转
if (!Input.GetMouseButton(0))
{
onDrag = false;
this.transform.Rotate(new Vector3(axisY, axisX, 0)*0.5f, Space.World);
}
}
}
最终效果如图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持得得之家。
织梦狗教程
本文标题为:unity3D实现物体任意角度自旋转


基础教程推荐
猜你喜欢
- 实例详解C#实现http不同方法的请求 2022-12-26
- c# – USING块在网站与Windows窗体中的行为不同 2023-09-20
- C#调用摄像头实现拍照功能的示例代码 2023-03-09
- Unity 如何获取鼠标停留位置下的物体 2023-04-10
- C#通过标签软件Bartender的ZPL命令打印条码 2023-05-16
- C#获取指定目录下某种格式文件集并备份到指定文件夹 2023-05-30
- Unity shader实现高斯模糊效果 2023-01-16
- C#中的Linq to JSON操作详解 2023-06-08
- C#中 Json 序列化去掉null值的方法 2022-11-18
- C# 解析XML和反序列化的示例 2023-04-14