鼠标拖动物体(物体旋转)
2018-04-18 本文已影响0人
Kyle_An
、、、
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CubeMove : MonoBehaviour
{
//是否被拖拽
bool Ondrag = false;
//旋转速度
public float Speed = 6f;
//阻尼速度
private float Tempspeed;
//鼠标沿水平方向移动的增量
private float Axisx;
//鼠标沿竖直方向移动的增量
private float Axisy;
//鼠标移动的距离
private float Cxy;
//接受鼠标按下的事件
void OnMouseDown(){
Axisx=0f;
Axisy=0f;
}
//鼠标拖拽时的操作
void OnMouseDrag ()
{
Ondrag = true;
//获得鼠标增量
//Axisx = -Input.GetAxis ("Mouse X");
if (Input.mousePosition.x > 500) {
Axisy = -Input.GetAxis ("Mouse Y");
} else {
Axisy = Input.GetAxis ("Mouse Y");
}
//计算鼠标移动的长度
Cxy = Mathf.Sqrt (Axisy * Axisy);
//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 ()
{
//Debug.Log (Input.mousePosition.x);
transform.Rotate(new Vector3 (Axisy, 0, 0) * Rigid (), Space.Self);
if (!Input.GetMouseButton(0)) {
Ondrag = false;
}
}
}
、、、