Unity鼠标控制物体 拖动旋转

public class Script2 : MonoBehaviour
{
    Ray ray;
    RaycastHit hit;
    GameObject Obj;
    Vector3 _Obj屏幕坐标_;
    Vector3 _鼠标世界坐标_;
    Vector3 _Obj坐标差值_;
    float _水平旋转_;
    float _垂直旋转_;

    // Use this for initialization
    void Start()
    {
    }

    // Update is called once per frame
    void Update()
    {
        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        _鼠标世界坐标_ = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, _Obj屏幕坐标_.z));
        _移动旋转_();
    }
    void _移动旋转_()
    {
        if (Input.GetMouseButton(0))
        {
            if (Physics.Raycast(ray, out hit))
            {
                Obj = hit.transform.gameObject;
                _Obj屏幕坐标_ = Camera.main.WorldToScreenPoint(Obj.transform.position);
                _Obj坐标差值_ = Obj.transform.position - _鼠标世界坐标_;
            }
            if (Obj != null)
                Obj.transform.position = _鼠标世界坐标_ + _Obj坐标差值_;
        }
        else
            Obj = null;
        if (Input.GetMouseButton(1))
        {
            if (hit.transform != null)
            {
                Obj = hit.transform.gameObject;
                _水平旋转_ += Input.GetAxis("Mouse X") * 5;
                _垂直旋转_ += Input.GetAxis("Mouse Y") * 5;
                Obj.transform.rotation = Quaternion.Euler(_垂直旋转_, -_水平旋转_, 0);

            }
        }
    }
  
}

你可能感兴趣的:(Unity鼠标控制物体 拖动旋转)