2011-09-01 83 views
0
Vector2 firstSquare = new Vector2(camera.location.X/Tile.tilewidth, camera.location.Y/Tile.tileheight); 
int firstX = (int)firstSquare.X; 
int firstY = (int)firstSquare.Y; 

Vector2 squareOffset = new Vector2(camera.location.X % Tile.tilewidth, camera.location.Y % Tile.tileheight); 
int offsetX = (int)squareOffset.X; 
int offsetY = (int)squareOffset.Y; 

此代碼是從xna resources.com網站瓷磚引擎教程。XNA遊戲工作室4.0使用C#

在這段代碼中,我怎麼能知道相機的位置和這些矢量對象值?

而且我也不知道相機視圖和世界觀與各自的2D遊戲。

回答

0

想象一下,您正在處理一臺真實的相機,並且您正瞄準一扇門,如果您將相機移動到右側,相機會向您顯示門正在向左移動...

門不動,你只是移動相機。

此操作由相機的視圖變換處理。

XNA提供一種方式來創建該視圖通過Matrix.CreateLookAt

雖然變換2D相機使用該:

View = Matrix.CreateTranslation(new Vector3(-_position, 0)) 
         * Matrix.CreateRotationZ(_rotation) 
         * Matrix.CreateScale(new Vector3(_scale, _scale, 1)) 
         * Matrix.CreateTranslation(new Vector3(ViewportScreen.X + ViewportScreen.Width * 0.5f, ViewportScreen.Y + ViewportScreen.Height * 0.5f, 0)); 

此視圖手柄照相機旋轉,縮放,和居中就位。