【Unity 3D学习】获取鼠标滑动方向(上下左右)-控制摄像机围绕物体旋转

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;

                }

           }

    }

}

你可能感兴趣的:(【Unity 3D学习】获取鼠标滑动方向(上下左右)-控制摄像机围绕物体旋转)