我在世界X,Z軸上有一塊板。 我有一臺相機可以旋轉以向下或向上看,並使用世界Y軸從左到右旋轉。在X,Z平面上使用相對於攝像機方向的可變軸進行平移
這裏的攝像頭旋轉代碼:
float angle = (mouseX_Current - mouseX_ActionStart) * camRotationSpeedMod;
Camera.main.transform.Rotate(0.0f, angle, 0.0f, Space.World);
angle = (mouseY_Current - mouseY_ActionStart) * camRotationSpeedMod;
Camera.main.transform.Rotate(angle, 0.0f, 0.0f, Space.Self);
使用鼠標鍵和鼠標位置輸入(拖動&丟棄)我的相機在世界翻譯。它會收到一個2D矢量,其中包含鼠標的X和Y值(拖放&)操作。下面是我使用的方法的代碼:
private void CameraOnPlaneTranslation(Vector2 myVector)
{
float cameraYPos = Camera.main.transform.position.y;
Camera.main.transform.Translate(new Vector3(myVector[0], 0.0f, myVector[1]));
Camera.main.transform.position = new Vector3(Camera.main.transform.position.x, cameraYPos, Camera.main.transform.position.z);
}
問題:當我的相機不是直接面向朝Z軸(0.0F,Z,0.0F)我計算平移向量不正確。我需要改變矢量的Y值,以便相機不會在世界Y軸上移動。
感謝
你的問題中有一些模糊之處,你不太可能得到答案,直到你問題更清楚。通過「拖放」,你真的意思是「鼠標移動,而左鍵按下」?在第二段中,當你說「我的問題是」時,你的意思是你的問題陳述(你希望它的工作方式),或者「譯文長度改變但它不應該」? Vector2 myVector從哪裏來?它是否在mouseMove eventHandler中被調用?這也是從其他屏幕點減少鼠標移動屏幕DeltaX,DeltaY嗎? – philologon
通過「拖放」,你真的意思是「鼠標移動,而左鍵按下」? - >是< - 在第二段中,當你說「我的問題是」你的意思是你的問題的陳述(你怎麼想它的工作) - >我的意思是相同的鼠標拖放移動不會根據相機方向轉換相同距離的相機。< - Vector2 myVector從哪裏來? - >它來自拖放方法,它返回鼠標在x軸和y軸上的距離。所以基本上我創建了一個具有這些值的新矢量3並用它來移動相機。< - – user2917126
謝謝。基於此,我認爲我的答案適用。我預計Translate方法會爲您更新相機位置值,因此請將此調用消除到Camera.main.transform.position = – philologon