直接保存一下代码= =
//拖拽旋转
private void DragModel()
{
#if UNITY_EDITOR ||UNITY_STANDALONE
if (Input.GetMouseButtonDown(0))
{
m_beginVec = Input.mousePosition;
if (EventSystem.current.IsPointerOverGameObject())
{
m_ClickOnUI = true;
return;
}
}
if (Input.GetMouseButton(0))
{
if (m_ClickOnUI || IsEdu)
return;
m_ToDefaultRot = false;
m_dragVec = Input.mousePosition;
if (Mathf.Abs(m_dragVec.x - m_beginVec.x) < 10)
return;
float tmpSpeed = m_dragVec.x - m_beginVec.x > 0 ? -m_dragSpeed : m_dragSpeed;
m_RotationTrans.Rotate(Vector3.up, tmpSpeed, Space.World);
m_beginVec = Input.mousePosition;
}
if (Input.GetMouseButtonUp(0))
{
m_ToDefaultRot = true;
m_ClickOnUI = false;
}
#else
if (Input.touchCount != 0)
{
if (Input.touches[0].phase == TouchPhase.Began)
{
m_beginVec = Input.touches[0].position;
if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
{
m_ClickOnUI = true;
return;
}
}
if (Input.touches[0].phase == TouchPhase.Moved)
{
if (m_ClickOnUI||IsEdu)
return;
m_ToDefaultRot = false;
m_dragVec = Input.touches[0].position;
float tmpSpeed = m_dragVec.x - m_beginVec.x > 0 ? -m_dragSpeed : m_dragSpeed;
m_RotationTrans.Rotate(Vector3.up, tmpSpeed, Space.World);
m_beginVec = Input.touches[0].position;
}
if (Input.touches[0].phase == TouchPhase.Ended)
{
m_ToDefaultRot = true;
m_ClickOnUI = false;
}
}
#endif
}
//松开复位
private void Update()
{
if (CanDrag)
DragModel();
if (m_ToDefaultRot)
{
m_RotationTrans.localRotation = Quaternion.Lerp(m_RotationTrans.localRotation, m_defaultRot, Time.deltaTime * m_dragSpeed);
}
}