拖動模型任意方向旋轉

今天新的任務需要修改一下模型的旋轉,以前的旋轉方式是左右拖動屏幕可以使得模型繞着自身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);


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章