usingUnityEngine;
usingSystem.Collections;
publicclassModelRotationScript : MonoBehaviour {
publicGameObject model;//目标物体
publicCamera myCamera;//摄像机
Vector2 first = Vector2.zero;//记录鼠标点击的初始位置
Vector2 second = Vector2.zero;//记录鼠标移动时的位置
booldirectorToLeft =false;
booldirectorToRight =false;
booldirectorToUp =false;
booldirectorToDown =false;
booldragging =false;//标记是否鼠标在滑动
// Use this for initialization
voidStart () {
}
// Update is called once per frame
voidUpdate () {
if(Input.GetMouseButton(0)) {
Ray ray =myCamera.ScreenPointToRay (Input.mousePosition);
RaycastHit hit ;
if(Physics.Raycast (ray,outhit)) {
//print(hit.collider.gameObject.name);
if(hit.collider.gameObject.name =="3D Model"&& dragging ==true) {
Vector3 newPosition = Vector3.zero;
floatspeed = 0;
if(directorToLeft ==true) {
newPosition =newVector3 (0, -1, 0);
speed = 15;
print ("left");
}
if(directorToRight ==true){
speed = 10;
newPosition =newVector3 (0, 1, 0);
print ("right");
}
if(directorToUp ==true) {
speed = 15;
newPosition =newVector3 (1, 0, 0);
print ("up");
}
if(directorToDown ==true){
speed = 10;
newPosition =newVector3 (-1, 0, 0);
print ("down");
}
GetComponent().transform.RotateAround (model.transform.localPosition, newPosition, speed * Time.deltaTime);
}
}
}
}
voidOnGUI() {
if(Event.current.type == EventType.MouseDown){//记录鼠标按下的位置
first = Event.current.mousePosition ;
}
dragging =false;
if(Event.current.type == EventType.MouseDrag){//记录鼠标拖动的位置
dragging =true;
second = Event.current.mousePosition ;
Vector2 slideDirection = second - first;
floatx = slideDirection.x, y = slideDirection.y;
if(y < x && y > -x) {// right
directorToLeft =false;
directorToRight =true;
directorToUp =false;
directorToDown =false;
} elseif(y > x && y < -x) {// left
directorToLeft =true;
directorToRight =false;
directorToUp =false;
directorToDown =false;
} elseif(y > x && y > -x) {// up
directorToLeft =false;
directorToRight =false;
directorToUp =true;
directorToDown =false;
} else{// down
directorToLeft =false;
directorToRight =false;
directorToUp =false;
directorToDown =true;
}
}
}
}