主要涉及函數(shù) Input.GetAxis(“Mouse x”) 可取得鼠標(biāo)橫向(x軸)移動(dòng)增量 Input.GetAxis(“Mouse y”) 可取得鼠標(biāo)豎向(y軸)移動(dòng)增量 通過(guò)勾股定理獲取拖拽長(zhǎng)度,長(zhǎng)度越長(zhǎng)旋轉(zhuǎn)越快 在project setting--Input 可以設(shè)置 直接上代碼座云,看了就明白了
```
using UnityEngine;
using System.Collections;
public class startRoate : MonoBehaviour
{
private bool onDrag = false;? //是否被拖拽//
public float speed = 6f;? //旋轉(zhuǎn)速度//
private float tempSpeed;? //阻尼速度//
private float axisX = 1;
//鼠標(biāo)沿水平方向移動(dòng)的增量//
private float axisY = 1;? ? //鼠標(biāo)沿豎直方向移動(dòng)的增量//
private float cXY;
void OnMouseDown()
{
//接受鼠標(biāo)按下的事件//
axisX = 0f; axisY = 0f;
}
void OnMouseDrag()? ? //鼠標(biāo)拖拽時(shí)的操作//
{
onDrag = true;
axisX = -Input.GetAxis("moveX");
//獲得鼠標(biāo)增量//
axisY = Input.GetAxis("moveY");
cXY = Mathf.Sqrt(axisX * axisX + axisY * axisY); //計(jì)算鼠標(biāo)移動(dòng)的長(zhǎng)度//
if (cXY == 0f) { cXY = 1f; }
}
float Rigid()? ? ? //計(jì)算阻尼速度//
{
if (onDrag)
{
tempSpeed = speed;
}
else
{
if (tempSpeed > 0)
{
tempSpeed -= speed * 2 * Time.deltaTime / cXY; //通過(guò)除以鼠標(biāo)移動(dòng)長(zhǎng)度實(shí)現(xiàn)拖拽越長(zhǎng)速度減緩越慢//
}
else {
tempSpeed = 0;
}
}
return tempSpeed;
}
void Update()
{
// this.transform.Rotate(new Vector3(axisY, axisX, 0) * Rigid(), Space.World); //這個(gè)是是按照之前方向一直慢速旋轉(zhuǎn)
if (!Input.GetMouseButton(0))
{
onDrag = false;
this.transform.Rotate(new Vector3(axisY, axisX, 0)*0.5f, Space.World);
}
}
}
```