unity3D中物体实现任意角度自旋转

主要涉及函数:

Input.GetAxis(“Mousex”) 可取得鼠标横向(x轴)移动增量

Input.GetAxis(“Mousey”) 可取得鼠标竖向(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中物体实现任意角度自旋转

相关文章:

你感兴趣的文章:

标签云: