這是我的變換。我從一個簡單的2D相機的例子中得到它。XNA/C#2D座標縮放到3D視圖矩陣的世界矩陣?
public Matrix Transform(GraphicsDevice graphicsDevice)
{
float ViewportWidth = graphicsDevice.Viewport.Width;
float ViewportHeight = graphicsDevice.Viewport.Height;
matrixTransform =
Matrix.CreateTranslation(new Vector3(-cameraPosition.X, -cameraPosition.Y, 0)) *
Matrix.CreateRotationZ(Rotation) *
Matrix.CreateScale(new Vector3(Zoom, Zoom, 0)) *
Matrix.CreateTranslation(
new Vector3(ViewportWidth * 0.5f, ViewportHeight * 0.5f, 0));
return matrixTransform;
}
如果我理解正確的話,它可以讓世界和相機之間的輥(旋轉),在變焦精靈規模的變化,並翻譯爲簡單的上,下,左,右控制。但是,它不會改變Z的深度。
但我需要的是讓遊戲世界縮放,而不僅僅是繪製的精靈。我假設爲了做到這一點,我需要改變相機與世界矩陣之間的Z距離。
我對編程非常新奇,對矩陣一般只有一個簡單的理解。我對XNA如何在繪畫方法中使用它們有所瞭解。到目前爲止,我想讓我的頭髮脫離尋找答案的無果而終......我只需要世界座標來縮放縮放,以便在我的鼠標在預縮放X.60 Y.60之前將X .600 Y.600後縮放(即:縮放級別0.1)。但我的鼠標沒有移動,只有世界變得更大(或縮小)。
我目前正在消化這種矩陣教程中,希望它能幫助我理解我做錯了什麼。 http://stevehazen.wordpress.com/2010/02/15/matrix-basics-how-to-step-away-from-storing-an-orientation-as-3-angles/ – RogueDeus
您是否試過改變ViewportWidth和ViewportHeight ?我認爲這可能會產生你想要的效果。 –
所有似乎要做的就是改變相機的位置。仍然獲得相同數量的窗口中的座標。無論縮放級別如何,它們似乎都以1:1鎖定。 – RogueDeus