今天新的任務需要修改一下模型的旋轉,以前的旋轉方式是左右拖動屏幕可以使得模型繞着自身Y軸旋轉,現在改爲任意觸摸屏幕旋轉,跟着觸摸移動的方向進行旋轉,這裏僅僅爲記錄一下代碼,方便以後查找,因爲博主比較懶,剛開始得到這個需求的時候也百度谷歌了一番,居然沒有找到這個效果,於是只好自己動手豐衣足食。
核心代碼爲:
//當前觸摸的座標與上一個觸摸座標的偏移量
Vector2 offsetPos = m_TouchCurPos - m_TouchPrePos;
//相機到目標的向量
Vector3 camRelativeToTarget = Vector3.Normalize(Cam.transform.position - transform.position);
//觸摸爲照相機座標,將此座標轉爲世界座標
Vector3 touchCurWorldPos = Cam.transform.localToWorldMatrix.MultiplyPoint(new Vector3(m_TouchCurPos.x, m_TouchCurPos.y, 0f));
Vector3 touchPreWorldPos = Cam.transform.localToWorldMatrix.MultiplyPoint(new Vector3(m_TouchPrePos.x, m_TouchPrePos.y, 0f));
//觸摸方向向量轉世界向量
Vector3 touchVec = touchCurWorldPos - touchPreWorldPos;
//旋轉軸爲camRelativeToTarget 與touchVec 兩向量形成的平面的法向量
Vector3 roundAxis = Vector3.Cross(touchVec, camRelativeToTarget);
transform.Rotate (roundAxis, Space.World);